试图允许用户在Hangman代码中使用大写或小写字母

时间:2019-04-26 01:28:23

标签: python

我正在上课用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)

代码本身有效,我只想知道如何解决此问题。有人可以帮忙吗?

3 个答案:

答案 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()

那应该可以解决空间和大小写问题。