所以我几乎完成了一个计算器,但在给出结果后,我想让它问我是否还将使用它。 在代码的开头,我有一个循环来让它重新开始,除非我键入“n”。你知道吗
# LOOP TO MAKE IT STAY ON
import sys
from colorama import init
from colorama import Fore, Back, Style
init()
while True:
然后完成的代码的其余部分继续进行。你知道吗
最后,我尝试了以下方法:
answer = input()
def badanswer():
if answer != "y" or "n":
return True
else:
return False
while badanswer is True:
print ("Wrong answer")
answer = input(("Wanna keep using the calculator? y/n "))
if badanswer is False:
if answer == "y":
continue
else:
break
sys.exit()
不知何故,当我测试它我键入一个随机字母(不是y或n)和程序继续。。。我错过了什么?我对python还很陌生,所以请原谅我的错误!谢谢。你知道吗
一个问题是
“or”是逻辑运算符,不允许“double”a!=你想做的比较。这个语句的实际含义是
if answer is not "y", or if "n"
,"n"
,就像任何非空字符串一样,在布尔上下文中总是真的。你知道吗你想要什么
您还需要通过添加括号来实际调用badanswer()。你知道吗
也没有理由将
if True
添加到循环条件-while badanswer()
做同样的事情。你知道吗badanswer
是一个函数,而不是布尔值。您需要调用函数并获取其返回值,如:if badanswer() is True
但是,退出程序的逻辑是不必要的。您根本不需要
badanswer
函数。只需从用户那里获取输入并检查它是“y”还是“n”。你知道吗注意:如评论中所述,
sys.exit()
是退出程序的一种非常残酷的方式。您可以通过修改由外部计算器循环检查的变量来更优雅地执行此操作;例如,初始化变量keep_running = True
,使用while keep_running: (...)
运行主循环,如果用户请求退出计算器,请设置keep_running = False
,以便主循环退出。你知道吗相关问题 更多 >
编程相关推荐