python布尔任务。对于if语句

时间:2014-02-24 23:57:29

标签: python if-statement boolean

我尝试了这个......但它不起作用

question = input("do you want the program to start? Type Y/y to start: ")
y = TRUE
Y = TRUE

if(question == TRUE):
     run statements
else:
我在做错了什么?这不起作用。

4 个答案:

答案 0 :(得分:0)

布尔值在Python中为True,而不是trueTRUE。在任何情况下,这都不符合您的预期。这就是我要做的。

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

您所写的内容将变量yY分配给某些(未定义的)变量TRUE。这将触发NameError,因为没有这样的变量TRUE。如果你做了:

y = True
Y = True

它仍然不会做你想要的,因为你的输入(输入变量question)是一个字符串,那些是变量。你可以用if globals()[question]做到这一点,但那是非常糟糕的做法,在这种情况下完全没必要。

作为旁注 - 从来没有理由输入== Trueif foo将评估为TrueFalse,这将自行满足条件。它只是做了一个不必要的比较:)

答案 1 :(得分:0)

要回答您的具体问题,由于这些问题,它无效:

  1. TRUE不是python中定义的变量。 True是。
  2. question == TRUE无效。见1.
  3. run statements不是真正的代码。
  4. 您需要在else:区块中添加内容。

    编辑:

  5. question在此代码中永远不会成为True。 - @adsmith

    注:

  6. 试着全面了解我的报道。

答案 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测试必须为TrueFalse(或1/0:p)

4)你的意思是Y / N?不是Y / y?