我目前正在做麻省理工学院关于Python的开放式课件,其中一个作业是做一个刽子手游戏。
大多数函数我都做得很好,但我遇到的问题是在这两个函数中:
def get_guessed_word(secret_word, letters_guessed):
lengthOf = len(secret_word)
listLength = ["_ "] *lengthOf
for i,char in enumerate(secret_word):
if char == letters_guessed:
listLength[i]=char+" "
listCopy = listLength[:]
print(list)
def get_available_letters(letters_guessed):
alphabet = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
for i, char in enumerate(alphabet):
if char == letters_guessed:
alphabet[i]="_"
alphabetCopy = alphabet[:]
print(alphabetCopy)
break
问题是,每次我遍历函数时,字母表都会重置,我试图通过创建一个副本来解决这个问题,但我意识到,即使在实现它之前,解决方案也确实不起作用,因为每次调用函数时,listCopy和alphabetCopy都只会复制“零状态”
我知道我可以做其他的解决方案,但我特别想要这种“用户体验”。我试过其他的解决办法,但我现在就是想不出来
获取可用的信件
所以你有一个已经猜到的字母列表,你想知道,剩下的字母是什么。 最简单的方法是使用
sets
它的作用是:
猜词
我假设变量字母_guessed是一个包含所有已猜测字母的列表或集合
在这种情况下,您可以使用:
如果要比较的对象具有相同的值,“==”运算符将返回true。它将返回false,因为一个是字符串,另一个是列表,因此不能有相同的值
如果左侧的输入存在于右侧的输入中,则“in”运算符返回true
然而
如果你一次猜一个字母,那么你需要你的函数在外面的变量上留下永久性的修改。所以变量alphabet不能在get\u available\u letters中声明,但必须在主代码中声明,并作为输入传递给函数get\u available\u letters。如果字母_guessed是一个1个字母长的字符串,则应该修复此函数。现在可以使用“==”运算符
对于另一个函数,需要在外部声明变量listLength并将其传递给该函数
并在需要修改数组而不影响原始数组时复制数组
相关问题 更多 >
编程相关推荐