Python 3.x Python程序赢得';t追加多个值

Python 3.x Python程序赢得';t追加多个值,python-3.x,Python 3.x,每当我尝试将(猜测)附加到all_guesses变量时,它似乎会替换上一个循环中的现有值。我想让程序记录下所有玩家每轮游戏的猜测次数,但它只记录最近的值。我确保变量不在while循环中,这样它就不会覆盖它,那么出了什么问题?我对python编程非常陌生,所以我似乎无法理解这一点。每次我运行循环时,猜测值和所有猜测值都会重置为其原始值 这是我的程序片段: def main(): guesses = 0 guessed = [] all_guesses = [] gu

每当我尝试将(猜测)附加到all_guesses变量时,它似乎会替换上一个循环中的现有值。我想让程序记录下所有玩家每轮游戏的猜测次数,但它只记录最近的值。我确保变量不在while循环中,这样它就不会覆盖它,那么出了什么问题?我对python编程非常陌生,所以我似乎无法理解这一点。每次我运行循环时,猜测值和所有猜测值都会重置为其原始值

这是我的程序片段:

def main():
    guesses = 0
    guessed = []
    all_guesses = []
    guess = input('\nPlease guess a letter: ').lower()
    letter = 'abcdefghi'
    answer = random.choice(letter)
    
    while len(guess) != 1 or guess not in letter:
        print("\nInvalid entry! One alphabet only.")
        guess = input('Please guess a letter: ')
        
    while len(guess) < 2 and guess in letter:
        if guess in guessed:
            guess = input("\nYou've already guessed that! Try again: ").lower()
            
        else: 
            if guess == answer:
                guesses = guesses + 1
                played = played + 1
                print("\nCongratulations, that is correct!")
                replay = input('Would you like to play again? Type y/n: ').lower()
                all_guesses.append(guesses)
            
def main():
猜测=0
猜测=[]
所有猜测=[]
guess=输入('\n请猜一个字母:')。lower()
字母='abcdefghi'
答案=随机。选择(字母)
而莱恩(猜)!=1或猜测不在字母中:
打印(“\n无效条目!仅一个字母表。”)
猜=输入('请猜一个字母:')
而len(guess)<2和guess在字母中:
如果猜中猜:
guess=input(“\n您已经猜到了!请重试:”).lower()
其他:
如果猜测==答案:
猜测=猜测+1
播放=播放+1
打印(“\n语法,正确!”)
replay=input('是否要再次播放?键入y/n:')。lower()
所有猜测。追加(猜测)

简单的回答是,
所有猜测都需要在
main
之外定义一个全局,重放逻辑也需要围绕
main
进行

您似乎缺少逻辑,因为您从不修改
猜测的
,而是希望在其中找到东西。代码中还有死胡同和其他缺失的部分。正如我所能猜到的,这大概就是你想要做的:

from random import choice
from string import ascii_lowercase as LETTERS

all_guesses = []

def main():
    guessed = []
    answer = choice(LETTERS)

    guess = input('\nPlease guess a letter: ').lower()

    while len(guess) != 1 or guess not in LETTERS:
        print("\nInvalid entry! One alphabet only.")
        guess = input('Please guess a letter: ').lower()

    while len(guess) == 1 and guess in LETTERS:
        if guess in guessed:
            guess = input("\nYou've already guessed that! Try again: ").lower()
            continue

        guessed.append(guess)

        if guess == answer:
            print("\nCongratulations, that is correct!")
            break

        guess = input("\nIt's not that letter. Try again: ").lower()

    all_guesses.append(len(guessed))

while True:
    main()

    replay = input('Would you like to play again? Type y/n: ').lower()

    if replay == 'n':
        break

print(all_guesses)

我甚至怀疑这个代码是否有效。例如,什么是
播放的
?我没有发布完整的代码,因为它太长了。如果您试图运行我提供的代码,它肯定不会工作。Played代表他们玩过的回合,但我没有展示节目的这一部分。谢谢你尽你所能帮助我,我知道我的节目是多么糟糕和混乱。我基本上是自学成才,而且做得不好。