我正在用 Python 创建一种问答游戏,其中一个问题是“输入一个包含 5 个字母的单词”。
所以基本上我想要的是用户输入任何包含 5 个字母或字符的内容。然后 python 检查它是否有 5 个字母,如果正确,则将它们发送到下一个问题。
对于你的游戏,我假设你有一些 while 循环来让事情继续进行。
这样做:
word = input("Give me a 5 letter word: ")
上面的行将询问用户 5 个字母的单词,他们的输入将存储在变量单词中。然后检查
if len(word) != 5:
print "that's not 5 letters..."
answer = raw_input("What is a five letter word? ")
if len(answer) == 5:
print "Correct!"
else:
print "Wrong, that has", len(answer), "letters!"
如果您使用的是 Python 3,则需要将
raw_input
替换为 input
,并在 print 表达式两边加上括号(因为 print 变成了一个函数)。
你可以试试这个。
if len(word) is 5
编辑
显然这很糟糕。我在发帖时并不知道。
无论如何,对于那些不知道和好奇的人,这里有一个小实验
>>> a = "hello"
>>> len(a) is 5
True
>>> len(a) is 4
False
>>> len(a) is 5.0
False
>>> len(a) == 5
True
>>> len(a) == 4
False
>>> len(a) == 5.0
True
再次编辑 根据interjay的评论,我进一步做了一个实验。
>>> for i in range(1000):
... a = 'x'*i
... if len(a) is not i:
... print(i)
... break
...
257
如果有人可以解释为什么它可以达到 256,我很乐意在这里添加它
再次编辑
这可能解释了这种行为。我引用了评论中的 interjay。
这是 CPython 中的优化: 范围内整数的对象 -1 到 256 是预先分配的,每次这些值之一被分配 遇到,则给出相同的 目的。对于其他整数,一个新的 每次都会创建对象。的 当然,这是一个实现 细节和Python之间可以改变 版本。
我的版本是:
question_one = input("Type a 5 letter word.") if not len(question_one) == 5: print("Thats not a 5 letter word!") else: print(your_next_question)