我是编程的新手,我正在尝试为用户选择退出“是”或y,或“否”或“n”,但我在尝试这样做时运气最差。有人可以帮助我指出我的错误并提示更好的方法来做到这一点吗?我真的很感激你的帮助。谢谢。
修改
我为我模糊的帖子道歉。让我在我的问题中更清楚一点。使用两个while循环在循环中执行我的程序,我想让用户选择是否要离开或重做程序。然而,该程序没有正确退出,即使我已经声明“n”具体设置为终止程序。但是,当我请求或不请求重做主程序时,代码将循环返回,无论我输入“y”还是“n”。我很困惑我的循环究竟出了什么问题,因为当我输入“n”时它应该关闭。我的循环退出究竟出现了什么问题?
我的编码
while True:
# Blah Blah Blah. Main program inserted here.
while True:
replay = input("Do another Calculation? (y/n)").lower()
if replay in ('y','n'):
break
print("Invalid input.")
if replay == 'y':
continue
else:
print("Good bye")
exit()
答案 0 :(得分:1)
您的.lower
应为.lower()
。 .lower()
是一个函数,没有括号调用它不会做任何事情:
>>> string = 'No'
>>> string.lower
<built-in method lower of str object at 0x1005b2c60>
>>> x = string.lower
>>> x
<built-in method lower of str object at 0x1005b2c60>
>>> x = string.lower()
>>> x
'no'
>>>
此外,您正在检查replay == input(...)
中的相等性。您只需要一个=
来分配:
>>> result = 0
>>> result == 4
False
>>> result = 4
>>> result == 4
True
>>>
在第二个:
循环中print replay
之后,您还有一个不受欢迎的while True
。
这是一个建议:而不是使用非常 unpythonic 的replay in ("no, "n")
,而是使用内置方法startswith(char)
查看是否它从那个角色开始:
>>> string = "NO"
>>> string.lower().startswith("n")
True
>>> string = "yeS"
>>> string.lower().startswith("y")
True
>>>
这也适用于naw
或yeah
等
以下是您编辑的代码:
a = int(input("Enter the first number :"))
b = int(input("Enter the second number :"))
print("sum ---" + str(a+b))
print("difference ---" + str(a-b))
print("product ---" + str(a*b))
print("division ---" + str(a/b))
input()
while True:
print("Do you want to try again?")
while True:
replay = input("Do another Calculation? 'y' for yes. 'n' for no.").lower()
print(replay)
if replay.startswith('y') == True:
break
if replay.startswith('n') == True:
exit()
else:
print("I don't understand what you wrote. Please put in a better answer, such as 'Yes' or 'No'")
答案 1 :(得分:1)
我看到一些语法错误:
1)print replay
应为print(replay)
2)if replay in ("yes","y")
应为if replay in ("yes","y"):
3)if replay in ("no","n")
应为if replay in ("no","n"):