我对我制作的python 2.7代码有疑问,似乎无法从朋友那里找到任何答案,所以我来到这里。我是python和编程的完整菜鸟。这是代码:
import time
import random
a = ['Spooky','Sexy','Snazzy','Random','Wild','Smoggy','Enchanting','Quick','Acoustic','Irritating','Annoying','Thirsty','Fierce','Embarassed','Touch']
b = ['Kurtis','Tisa','Randy','Theda','Dani','Beulah','Dallas','Jeannette','Vera','Kristopher','Donna','Wanda','Sergio','Betsy','Holly']
c = ['1873','123','448','8781','1284','3','45','34']
d = ['Hicks','Ryan','Houston','Cunningham','Ortiz','Baker','Erickson','Pittman','Patrick','Blake','Allison','Taylor','Harper','Romero']
random.shuffle(a)
random.shuffle(b)
random.shuffle(c)
random.shuffle(d)
a = raw_input('Would you like a random username? ')
if a == 'Yes' or 'yes' or 'Yea' or 'yea':
print 'PROCESSING..'
time.sleep(.5)
print 'PROCESSING..'
time.sleep(.5)
print 'PROCESSING..'
time.sleep(.5)
print 'PROCESSING..'
time.sleep(.5)
print 'PROCESSING..'
time.sleep(.5)
print 'PROCESSING..'
time.sleep(.5)
print 'PROCESSING..'
time.sleep(.5)
print 'PROCESSING..'
time.sleep(.5)
print a[3] + b[2] + d[5] + c[4]
else:
print "I didn't have a name for you anyways"
我的问题是该程序会生成一个随机名称,即使您输入其他内容,然后是'是'或者是'是'或者'是啊'或者'是啊'。 非常感谢提前!
答案 0 :(得分:6)
尝试
if a in ['Yes', 'yes', 'Yea', 'yea']:
or
的每一面都是它自己的独立表达。因此,如果a == 'Yes'
为false,那么Python将不会尝试查看a == 'yes'
是否为真。它会尝试查看'yes'
是否为真。它是,因为任何非空字符串都被认为是真的。
答案 1 :(得分:3)
您的代码与此相同:
if (a == 'Yes') or ('yes') or ('Yea') or ('yea'):
...
bool('yes')
为True - 非空字符串被视为True
答案 2 :(得分:2)
你的if条件错了,应该是
if a == 'Yes' or a == 'yes' or a == 'Yea' or a == 'yea':
答案 3 :(得分:2)
'或'运算符不会按照您的想法运行:)
当你有:
if a == 'Yes' or 'yes' or 'Yea' or 'yea':
如果满足以下任何条件,您的程序将生成一个随机名称:
a == 'Yes'
'yes'
'Yea'
'yea'
“是”或“是”等值始终为真,因此您的程序将始终生成随机名称。
其他任何一个答案都是解决问题的好方法;老式的方法就像:
if a.upper()[0] == 'Y'
将接受以“y”或“Y”开头的任何回复,如果您的用户输入“是”,这可能很方便!
答案 4 :(得分:0)
因为当你写if a == 'Yes' or 'yes' or 'Yea' or 'yea':
时,它与if (a == 'Yes') or ('yes') or ('Yea') or ('yea'):
相同。 'yes'/'Yea'/'yea'被评估为布尔值。
答案 5 :(得分:0)
您的代码会检查if a == 'Yes'
,然后是'yes'
,然后是'Yea'
,,然后 'yea'
,这会导致输入{ {1}}语句,因为字符串是非空的。
相反,请将if
语句更改为if
,如下所示:
if a.lower().startswith('y'):
答案 6 :(得分:0)
import string
if a.lower().startswith("y"):