我尝试了这个......但它不起作用
question = input("do you want the program to start? Type Y/y to start: ")
y = TRUE
Y = TRUE
if(question == TRUE):
run statements
else:
我在做错了什么?这不起作用。
答案 0 :(得分:0)
布尔值在Python中为True
,而不是true
或TRUE
。在任何情况下,这都不符合您的预期。这就是我要做的。
question = input("...")
if question.lower() == 'y': # or `question in ('y','Y'):` or `question.upper() == "Y":` or `question.casefold() == 'y':` or................
do_things
else:
handle_it
您所写的内容将变量y
和Y
分配给某些(未定义的)变量TRUE
。这将触发NameError
,因为没有这样的变量TRUE
。如果你做了:
y = True
Y = True
它仍然不会做你想要的,因为你的输入(输入变量question
)是一个字符串,那些是变量。你可以用if globals()[question]
做到这一点,但那是非常糟糕的做法,在这种情况下完全没必要。
作为旁注 - 从来没有理由输入== True
。 if foo
将评估为True
或False
,这将自行满足条件。它只是做了一个不必要的比较:)
答案 1 :(得分:0)
要回答您的具体问题,由于这些问题,它无效:
TRUE
不是python中定义的变量。 True
是。question == TRUE
无效。见1. run statements
不是真正的代码。您需要在else:
区块中添加内容。
编辑:
question
在此代码中永远不会成为True
。 - @adsmith
注:
试着全面了解我的报道。
答案 2 :(得分:0)
我认为您可能希望在这些方面使用代码:
answer = raw_input("Do you want the program to start? Type Y/y to start: ")
if answer[0].lower() != "y": # first character not a "Y" or "y"?
exit()
rest of program...
答案 3 :(得分:-1)
1)您有五(5)个空格缩进if
子句。应该遵循一般接受的Python实践(GAPP);)(是的,我刚刚做了这个。它可能会或可能不会成为一件事:p)你应该使用四(4)个空格。
2)尝试在pass
else:
else:
pass
3)在Python中,case
很重要。因此,boolean
测试必须为True
或False
(或1/0:p)
4)你的意思是Y / N?不是Y / y?