我在这个Hangman代码中哪里出错了?

时间:2017-03-08 22:44:40

标签: python

我正在处理Python中的Hangman问题,要求我定义一个以字符串string.ascii_lowercase(字母表中的字母)和给定列表lettersGuessed开头的函数,以及返回字母Guessed中的所有字母的字符串(按字母顺序排列)。

这是我到目前为止所做的:

def getAvailableLetters(lettersGuessed):
    s = string.ascii_lowercase[:]
    for letter in string.ascii_lowercase:
        if letter in lettersGuessed:
            s.replace(letter, '')
    return s

但是,对于lettersGuessed的每个测试值,此函数只返回string.ascii_lowercase,而不是s。 我哪里错了?|

2 个答案:

答案 0 :(得分:0)

方法replace()不编辑字符串。相反,它返回一个字符串的副本,其中旧的出现已被new替换。所以第五行应该是这样的:

s = s.replace(letter, '')

答案 1 :(得分:0)

您应该执行以下操作。

s = s.replace(letter, '')

而不仅仅是:

s.replace(letter, '')

因为,replace()返回返回字符串的副本,其中所有出现的substring old都替换为new。请看以下示例。

s = "welcome to stackoverflow"
s.replace('stackoverflow', '')
print(s) # prints 'welcome to stackoverflow'
s= s.replace('stackoverflow', '')
print(s) # prints 'welcome to'