Join = input('Would you like to join me?')
if Join == 'yes' or 'Yes':
print("Great," + myName + '!')
else:
print ("Sorry for asking...")
所以这是我的代码。它更长;只包括问题。我在问一个是或否的问题,在控制台中它运行平稳,直到你得到它。无论您键入什么,您都会得到“是”输出。有人可以帮忙吗?我也使用过 elif 语句,但没有运气。
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.
这不是or
操作员的工作方式。代替:
if Join == 'yes' or 'Yes':
和:
if Join in ['yes', 'Yes']:
它会做你想做的事。
编辑:或者试试这个,为了更通用的目的:
if 'yes'.startswith(Join.lower()):
应该匹配'y','Y','ye','Ye','YE'等等。
if 语句实际上应该是:
if Join=='yes' or Join =='Yes'
if语句在代码中的编写方式将导致代码以这种方式进行评估:
(if Join == 'yes') or ('Yes'):
请注意,('Yes')是一个真值,并且总是评估为真