【问题标题】:How can I add values in the list using for loop in python? [duplicate]如何在 python 中使用 for 循环在列表中添加值? [复制]
【发布时间】:2015-10-19 05:32:11
【问题描述】:

我在这里尝试做的是要求用户输入任何数字,然后要求用户输入任何名称,然后将此输入存储在列表中。

但是,当我输入任何数字时,它只要求输入一次名称并在列表中显示输出:

def main():
    # a = 4
    a = input("Enter number of players: ")
    tmplist = []
    i = 1
    for i in a:
        pl = input("Enter name: " )
        tmplist.append(pl)

    print(tmplist)

if __name__== "__main__": 
    main()

输出:

Enter number of players: 5
Enter name: Tess
['Tess']

我想要的是,for 循环应该运行 5 次,并且用户输入的 5 个值存储在一个列表中。

【问题讨论】:

  • This 在受欢迎程度和细节方面会是一个更好的副本,但两者都没有解决 range 的缺失问题。

标签: python list python-3.x


【解决方案1】:

您需要将玩家数量转换为整数,然后循环那么多次,您可以使用range() 函数来实现。示例 -

def main():
    num=int(input("Enter number of players: "))
    tmplist=[]
    for _ in range(num):
        pl=input("Enter name: " )
        tmplist.append(pl)

    print(tmplist)

【讨论】:

  • 谢谢,它成功了。你能告诉我为什么在这里使用范围吗?
  • @PrafullaKamble - 你真的应该查看你的教科书或其他课程材料(或者,如果你不在课堂上,official Python tutorial)。您的代码表明您缺少几个基本概念。
  • 谢谢。而不是使用 append - 还有其他方法可以将值添加到列表中吗?
【解决方案2】:

由于您使用的是 Python3

a=input("Enter number of players: ")

表示a 是一个字符串“5”。由于这只有一个字符长 - 循环只会运行一次

你需要使用

a = int(input("Enter number of players: "))

您还需要更改循环

for i in range(a):

我建议使用更有意义的变量名 - 特别是如果这是家庭作业

def main():
    number_of_players = int(input("Enter number of players: "))
    player_list = []

    for i in range(number_of_players):
        player = input("Enter name: " )
        player_list.append(player)

    print(player_listlist)

if __name__== "__main__": 
    main()

【讨论】:

    【解决方案3】:

    你得到了一个字符串a,它可能包含类似'5'的东西。然后你初始化一个计数器i。然后循环遍历这个字符串,因为它是'5',所以会导致一次迭代,因为'5' 中只有一个字符。

    首先你必须把它变成一个数字,a = int(a)

    使用a 作为数字,您仍然无法循环遍历它,因为数字不是可迭代的。

    那么你应该创建一个 range 对象来循环使用 for i in range(a):

    然后您就可以按预期进行操作了。

    【讨论】:

      【解决方案4】:

      由于输入 a 是一个字符串 您需要将其转换为数字,然后使用不同的 for。

      应该是

      def main():
          #a=4
          a=int(input("Enter number of players: "))
          tmplist=[]
          i=0
          while i < a:
              pl=input("Enter name: ")
              tmplist.append(pl)
              i+=1
          print(tmplist)
      
      main()
      

      【讨论】:

      • OP 使用的是 Python 3,所以请将 raw_input("Enter name: ") 替换为 input('Enter name: ')
      • @Srgrn 试过这个,但它进入了无限循环。
      • 我在 python 2 上测试了它,所以也许我错过了一些东西,我看到你还是得到了帮助。
      猜你喜欢
      • 2013-04-24
      • 1970-01-01
      • 2020-03-23
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      相关资源
      最近更新 更多