3

我想让用户输入字符串,例如2+5-3+6并返回10。如果用户输入c,则将打印答案。当用户输入c.

print 'This is a calculator. Please follow the instruction.'

temp = 0
string = 0

def asmd(string):
    print 'Your answer is', eval(str(string))

while temp != 'c':
    print 'Please enter a number or operation. Enter c to complete. :'
    temp = raw_input()
    string = str(string)+str(temp)

    if temp == str('c'):
        asmd(string)
4

1 回答 1

1

要修复计算器,只需确保结束字符 ( c) 不会出现在结果字符串中:

if temp == str('c'):
    asmd(string[:-1])

我必须指出,整个脚本非常疯狂。您正在使用eval,它可以一次评估完整的表达式,但您仍然指示用户一个一个地输入它们。使用 eval,您可以在一行中重写整个脚本:

print eval(raw_input())

同样正如评论中广泛指出的那样,eval如果您不信任运行您的计算器的用户,使用它通常是个坏主意。如果您只是在练习,那很好——只是不要eval在“真实代码”中使用。

于 2012-10-18T16:49:51.237 回答