我需要该程序从重复功能中执行以下两项操作之一,但是它应该能够同时执行这两项操作,因此我不知道为什么。 它必须做两件事
我试图使它只是一个if-else语句,而不是if-elif-else,它没有改变任何东西,我也尝试过重新排列代码,但是那只会改变我可以从子程序获得的单个输出。这是当前的子程序:
def repeatloop():
repeat = input("Do you want to calculate another bill? (y/n): ")
if repeat == 'n' or 'N':
print("Goodbye.")
time.sleep(2)
sys.exit()
elif repeat == 'y' or 'Y':
main()
else:
print("Error. Program will shut down.")
time.sleep(2)
sys.exit()
它应该能够重复程序(基于y或Y输入),终止程序并显示“再见”。基于n或N输入,否则应显示“错误。程序将关闭。”如果输入了无效的输入,则会在关闭前显示一条消息。 非常感谢可以帮助我的人!
答案 0 :(得分:0)
您好,欢迎来到Stackoverflow。
您的问题是您的if
陈述不完全正确;而且整个函数没有正确缩进。
if repeat == 'n' or 'N'
与if repeat == 'n' or repeat == 'N'
不同。
在第二种情况下,您在repeat
关键字上测试了两个不同的语句,在第一个语句上,您是否查看:
repeat
等于n
,并且'N'
不是None
;并非如此,在这种情况下总是返回true。另一种实现方法可能是if repeat in ["n", "N"]
甚至更好:if repeat.lower() == 'n'
因此,综合考虑,您的代码应优化为:
def repeatloop():
repeat = input("Do you want to calculate another bill? (y/n):")
if repeat.lower() == 'n':
print("Goodbye.")
time.sleep(2)
sys.exit()
elif repeat.lower() == 'y':
main()
else:
print("Error. Program will shuts down.")
time.sleep(2)
sys.exit()
答案 1 :(得分:0)
您可以使用in ()
与列表进行比较。它将变量的值与列表进行比较。
def repeatloop():
repeat = input("Do you want to calculate another bill? (y/n): ")
if repeat in ('n','N'):
print("Goodbye.")
time.sleep(2)
sys.exit()
elif repeat in ('y','Y'):
main()
else:
print("Error. Program will shut down.")
time.sleep(2)
sys.exit()
答案 2 :(得分:0)
if repeat == 'n' or 'N'
不起作用,因为您一直在检查bool('N')
,这始终是正确的,对于repeat == 'y' or 'Y'
也是一样,因为
bool('Y')
始终为真。
首先检查重复项是否在列表['n','N']
中,或者是否不在列表['y','Y']
中,然后退出程序,否则调用相同的函数repeatloop
>
import time, sys
def repeatloop():
repeat = input("Do you want to calculate another bill? (y/Y/n/N): ")
if repeat in ['n', 'N']:
print("Goodbye.")
time.sleep(2)
sys.exit()
elif repeat in ['y', 'Y']:
repeatloop()
else:
print("Error. Program will shut down.")
time.sleep(2)
sys.exit()
repeatloop()