首页 > 解决方案 > 多次附加用户输入

问题描述

我想将用户输入存储在列表中,根据程序随后做出决定的长度。

就目前而言,用户输入在每次用户提供输入时存储多次,但它应该只附加一次。

moves = int(input("Enter the number of moves: "))

throw00 = []
throw01 = []
throw10 = []
throw11 = []

player_move_dif = [] #create an empty list out of your for-loop

for i, turn in enumerate(range(moves)): #use enumerate() to count the loops
    if i >= 0: #first move has no previous one
        player_move_dif.append(input("Choose your move number %s (0 or 1):" % (turn+1)))
        player_move_2 = int(player_move_dif[i])
        player_previous_move = int(player_move_dif[i-1])
    else:
        player_move_dif.append(input("Choose your move number %s (0 or 1):" % (turn+1)))
        player_move_2 = int(player_move_dif[i])
        player_previous_move = int(player_move_dif[i-1])
        #continue
       
    for turn in range(moves): #store player moves in the respective lists    
        if player_move_2 == 0 and player_previous_move == 0:
            throw00.append(player_move_2)
        elif player_move_2 == 0 and player_previous_move == 1:
            throw01.append(player_move_2)
        elif player_move_2 == 1 and player_previous_move == 0:
            throw10.append(player_move_2)
        else:
            throw11.append(player_move_2)

因此,经过 5 圈后,列表(此处throw11)的大小为 25 而不是 5。

在此处输入图像描述

我试过extend而不是,append但这给了我一个 TypeError 。

标签: pythonlistappend

解决方案


这将起作用,因为这是错误

moves = int(input("Enter the number of moves: "))

throw00 = []
throw01 = []
throw10 = []
throw11 = []

player_move_dif = [] #create an empty list out of your for-loop

for i, turn in enumerate(range(moves)): #use enumerate() to count the loops
    if i >= 0: #first move has no previous one
        player_move_dif.append(input("Choose your move number %s (0 or 1):" % (turn+1)))
        player_move_2 = int(player_move_dif[i])
        player_previous_move = int(player_move_dif[i-1])
    else:
        player_move_dif.append(input("Choose your move number %s (0 or 1):" % (turn+1)))
        player_move_2 = int(player_move_dif[i])
        player_previous_move = int(player_move_dif[i-1])
        #continue
        
    #############################################################################
    """REMOVED THIS LINE OF CODE- for turn in range(moves): #store player moves in the respective lists  Because This Means That The Number Of Moves The Player Entered `append` the given input that number of times"""
    ################################################################################

    if player_move_2 == 0 and player_previous_move == 0:
        throw00.append(player_move_2)
    elif player_move_2 == 0 and player_previous_move == 1:
        throw01.append(player_move_2)
    else:
        throw11.append(player_move_2)



print(throw00)
print(throw01)
print(throw10)
print(throw11)

推荐阅读