所以我正在制作一个简单的计时器程序,以便在Python上做得更好,因为我之前从未真正尝试过。由于我对语言的了解有限,我觉得自己没有资格自己诊断这个问题。我尝试将双引号更改为我的“if mode ==”语句周围的单引号,但这并没有改变任何内容。我一直收到“无效模式。”,这是我的错误消息,当它没有启动或关闭时。
这是我的代码:
import time
seconds = 0
mode = "down"
def main():
print("Timer v1.0 by Alexis Knox")
time.sleep(1)
seconds = int(input("Seconds to count: "))
mode = str(input("Timer mode [up/down]: "))
if mode != 'up':
print("Invalid mode.")
exit(0)
if mode != 'down':
print("Invalid mode.")
exit(0)
if seconds < 1:
print("Invalid time.")
exit(0)
if mode == 'up':
for x in range(seconds):
x += 1
print(str(x))
time.sleep(1)
if mode == 'down':
y = seconds
for y in range(seconds):
y -= 1
print(str(y))
time.sleep(1)
# Ensure that we execute main
if __name__ == "__main__":
main()
答案 0 :(得分:1)
如果你看看我在你的代码中做了什么,这应该解决问题
if seconds < 1:
print("Invalid time.")
exit(0)
elif mode == 'up':
for x in range(seconds):
x += 1
print(str(x))
time.sleep(1)
elif mode == 'down':
y = seconds
for y in range(seconds):
y -= 1
print(str(y))
time.sleep(1)
else:
print("Invalid mode.")
exit(0)
如果您像以前一样运行连续的if语句,如果它们彼此相关,则最好使用elif语句,如我的代码所示。 else也更高效,因为这将完成前一代码的第一部分所做的事情,除非它首先运行if和elif测试。否则将基本上捕获elif中未说明的任何内容以及测试。你的输出怎么可能不是你想要的,但那不是问题
答案 1 :(得分:0)
如果输入“up”,则第二个if
将为true,因为模式不是“down”。如果输入“down”,则第一个if
将为真,因为模式不是“up”。其他任何东西,第一个if
将会消失,因为其他任何东西都不会“向上”。即在任何情况下,前两个中的一个将在你到达实际处理事物的代码之前就会消失。