flag = True
principleAmount = float(input("Please enter a principal amount: "))
while(flag):
userInput = str(input("(s)imple or (c)ompound interest? "))
if userInput in ['s', 'S']:
print("hello")
elif userInput in ['c', 'C']:
print("goodbye")
else:
print("wrong!")
由于某种原因,这是我得到的错误: 文件“”,第1行,位于 NameError:名称“ s”未定义 c也一样。 我试图用打招呼,再见和错误来测试它,但不幸的是它没有用
答案 0 :(得分:0)
您的代码可以正常工作,只是while循环可以永久运行。
答案 1 :(得分:0)
您的代码在Python 3中应该能正常工作(除了永远不会退出,因为您不会更改flag
的值)。
但是您看到的错误仅在Python 2 中才有意义,其中input
被实现为接受字符串并eval
对其进行处理。这将说明错误的行号(第1行没有任何可能引发NameError
,但eval
有效地将被评估为从头开始在第1行开始的代码)和错误({ {1}} eval
中的input
会尝试查找名为s
的变量,但不会产生值为s
的字符串。
因此,解决您的主要问题的方法是:
's'
的所有用法更改为input
(这与Python 2的Python 3的raw_input
函数等效,该函数接受字符串而无需尝试input
)< / li>
在这里,您可以:
eval
/ Py3 str()
已被保证返回input
,并删除{ {1}}只是多余的拇指摆动raw_input
(或input
)添加到受str
控制的块中,因此当您说str
时,您实际上终止了循环。