我正在上课用python编写子手游戏。告诉用户在大写时输入小写时他们猜错了,反之亦然。同样,当输入中有空格时,它也会显示为下划线(_
)。
def gettingWord(theWord, lettersGuessed):
count = 0
blank = ['_ '] * len(theWord)
for i, c in enumerate(theWord):
if c in lettersGuessed:
count = count + 1
blank.insert(count-1,c)
blank.pop(count)
if count == len(theWord):
return ''.join(str(e) for e in blank)
else:
count = count + 1
blank.insert(count-1,'_')
blank.pop(count)
if count == len(theWord):
return ''.join(str(e) for e in blank)
代码本身有效,我只想知道如何解决此问题。有人可以帮忙吗?
答案 0 :(得分:1)
如果我的理解正确,则希望用户能够使用大写和小写字符而不影响结果。如果是这种情况,则可以使用字符串的lower()方法将用户猜测的每个字符都转换为小写。在您的函数中,您可以仅在开头添加以下两行:
theWord = theWord.lower()
lettersGuessed = [c.lower() for c in lettersGuessed]
首先将单词猜成小写,然后将每个字符转换成字母猜成小写(假设lettersGuessed
是一个字符列表,如果是字符串,则可以只写lettersGuessed = lettersGuessed.lower()
) 。这样,所有字符都将是小写字母,因此答案将仅取决于字符,而不取决于大小写。
答案 1 :(得分:0)
将猜测的字符和字母都转换为小写以忽略大小写。如果字符是空格,则还希望插入字符,因此应在if校验中添加or not c.strip()
,以在字符的空白处也插入字符。
此外,为了减少代码重复,您应该尝试从if / else块中删除重复的代码,这将有助于维护此代码或将来更改逻辑。
def gettingWord(theWord, lettersGuessed):
count = 0
blank = ['_ '] * len(theWord)
for c in theWord:
if c.lower() in lettersGuessed.lower() or not c.strip():
blank.insert(count, c)
else:
blank.insert(count, '_')
count = count + 1
blank.pop(count)
if count == len(theWord):
return ''.join(str(e) for e in blank)
答案 2 :(得分:0)
将所有内容都转换为小写并删除空格。
单词库中的所有单词都应小写
输入时:
letter = input('Enter a letter: ').lower().strip()
那应该可以解决空间和大小写问题。