3
Join = input('Would you like to join me?')
if Join == 'yes' or 'Yes':
  print("Great," + myName + '!')
else:
  print ("Sorry for asking...")

所以这是我的代码。它更长;只包括问题。我在问一个是或否的问题,在控制台中它运行平稳,直到你得到它。无论您键入什么,您都会得到“是”输出。有人可以帮忙吗?我也使用过 elif 语句,但没有运气。

4

4 回答 4

15
if Join == 'yes' or 'Yes':

这总是正确的。Python 将其读取为:

if (Join == 'yes') or 'Yes':

的后半部分or,作为非空字符串,始终为真,因此整个表达式始终为真,因为任何or为真都是真的。

您可以通过显式比较Join这两个值来解决此问题:

if Join == 'yes' or Join == 'Yes':

但在这种特殊情况下,我建议最好的写法是:

if Join.lower() == 'yes':

这样用户输入的大小写无关紧要,它被转换为小写并针对小写值进行测试。如果您打算在Join其他地方使用该变量,则在输入时将其小写可能会很方便:

Join = input('Would you like to join me?').lower()
if Join == 'yes':   # etc.

您也可以编写它,以便用户可以输入任何以以下开头的内容,y或者实际上只是y

Join = input('Would you like to join me?').lower()
if Join.startswith('y'):   # etc.
于 2013-07-30T17:53:35.360 回答
1

我昨天回答了这个问题

您可以使用.lower()

Join = input('Would you like to join me?')
if Join.lower() == 'yes':
  print("Great," + myName + '!')
else:
  print ("Sorry for asking...")
于 2013-07-30T17:55:20.420 回答
0

这不是or操作员的工作方式。代替:

if Join == 'yes' or 'Yes':

和:

if Join in ['yes', 'Yes']:

它会做你想做的事。

编辑:或者试试这个,为了更通用的目的:

if 'yes'.startswith(Join.lower()):

应该匹配'y','Y','ye','Ye','YE'等等。

于 2013-07-30T17:52:47.787 回答
0

if 语句实际上应该是:

if Join=='yes' or Join =='Yes'

if语句在代码中的编写方式将导致代码以这种方式进行评估:

(if Join == 'yes') or ('Yes'):

请注意,('Yes')是一个真值,并且总是评估为真

于 2013-07-30T17:55:00.000 回答