如何计算用户输入的字符数量
我正在用Python制作一个问答游戏,其中有一个问题是“输入一个包含5个字母的单词”。
简单来说,我想让用户输入任何包含5个字母或字符的内容,然后Python会检查这个输入是否正好有5个字母。如果是正确的,就会把他们带到下一个问题。
3 个回答
0
你可以试试这个。
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版本之间有所变化。
1
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
,而且在打印的内容周围加上括号(因为在Python 3中,打印变成了一个函数)。
3
对于你的游戏,我猜你有一个循环在不停地运行。
你可以这样做:
word = input("Give me a 5 letter word: ")
上面的代码会让用户输入一个五个字母的单词,然后把他们输入的内容存储在一个叫做word的变量里。接下来,你需要检查一下:
if len(word) != 5:
print "that's not 5 letters..."