【问题标题】:How to do a Boolean if statement with strings?如何使用字符串执行布尔 if 语句?
【发布时间】:2012-10-28 21:27:38
【问题描述】:

我有一段代码如下:

maybeYes = input("Please enter Yes to start.")
if maybeYes == "Yes":
    pass
else:
    print "Wrong answer."

它给出了以下错误:

NameError: name 'Yes' is not defined

我该如何解决这个问题?

【问题讨论】:

  • 使用raw_input() 代替input()

标签: python if-statement boolean nameerror


【解决方案1】:

假设这是 python,请使用 raw_input 而不是 input。 输入被认为是危险的,因为它会评估您输入的任何内容,所以如果您这样做:

   x = input()

然后输入 2+4,x 将等于 6。raw_input 只是给你输入的字符串。

【讨论】:

  • 感谢 jrdn 的工作。另一个问题。如果我希望这个函数(因为它在用户定义的函数中)在条件为 False 的情况下再次运行,我该如何让它做到这一点?现在它只是打印错误答案并继续前进。
  • 与其再次运行该函数,不如将代码放在一个while循环中可能是最简单的方法,例如while raw_input() != "Yes": print "try again"
  • 但条件不会改变,所以它会无限打印“再试一次”,无法停止。
  • 试一试 :) 每次循环都会重新评估循环条件。
  • 是的,我试过了。我将输入设置为一个变量,如果它不断打印“再试一次”,输入就不能改变。
【解决方案2】:

使用raw_input() 代替input()

>>> maybeYes = raw_input("Please enter Yes to start ")
Please enter Yes to start yes
>>> maybeYes
'yes'

input() 视为直接在解释器中输入,因此yes 需要为'yes',python 才能知道您的意思是字符串yes

编辑:

你需要使用while来循环。

while raw_input("Please enter Yes to start: ") != 'Yes':
       print 'Wrong'

print 'Correct'

print 'Doing something else...'

#Carry on here 

输出:

Please enter Yes to start: nowg
Wrong
Please enter Yes to start: wggwe
Wrong
Please enter Yes to start: Yes
Correct
Doing something else...

【讨论】:

  • 那么,如果我希望它循环并说“每次输入不是 Yes 时都给出错误答案,只有在它是时才继续?
  • 你们不明白我在做什么。输入没有改变,所以循环如何停止。如果输入不是第一次是,我希望它再次要求输入。我不想要无限重复的打印语句字符串。
  • 不能,声望不够。
  • 你会因为接受答案而获得声誉,你必须点击打勾。
【解决方案3】:

此版本将接受“是”的任何变体,例如“是”、“是”、“是”、“是”等。

answer = raw_input('Please enter Yes to start: ')
while answer.upper() != 'YES':
   print 'Sorry, your entered something else'
   answer = raw_input('Please enter Yes to start: ')
print "Thank you, you entered ", answer

【讨论】:

  • 这有点过于复杂了,你可以从raw_input()调用upper,即while raw_input("Please enter Yes to start: ").upper() != 'YES':
猜你喜欢
  • 2013-03-26
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 1970-01-01
  • 2022-09-29
  • 1970-01-01
  • 2018-04-17
  • 2012-02-09
相关资源
最近更新 更多