将多个元素添加到 Python 中的列表

Adding multiple elements to a list in Python

我正在尝试用 Python 写一些像钢琴一样的东西。用户输入的每个数字都会播放不同的声音。

  1. 系统会提示用户他们希望能够按下多少个键(迭代)。
  2. 他们将被提示输入一个声音的数字,次数与他们输入迭代次数相同。每个数字都是不同的声音。
  3. 它将播放声音。

我在使用 userNum 功能时遇到问题。我需要他们为声音输入的所有数字附加到列表,然后另一个函数将读取列表并相应地播放每个声音。这是我目前所拥有的:

#Gets a user input for each sound and appends to a list.
def userNum(iterations):
  for i in range(iterations):
    a = eval(input("Enter a number for sound: "))
  myList = []
  while True:
    myList.append(a)
    break
  print(myList)
  return myList

这是使用我目前拥有的代码打印出来的列表的样子:

>>> userNum(5)
Enter a number for sound: 1
Enter a number for sound: 2
Enter a number for sound: 3
Enter a number for sound: 4
Enter a number for sound: 5
[5]

是否有任何想法可以将每个数字附加到列表中,或者是否有更有效的方法?

您应该在函数中做的第一件事是初始化一个空列表。然后你可以循环正确的次数,并且在 for 循环中你可以 append 进入 myList。您还应避免使用 eval,在这种情况下,只需使用 int 即可转换为整数。

def userNum(iterations):
    myList = []
    for _ in range(iterations):
        value = int(input("Enter a number for sound: "))
        myList.append(value)
    return myList

测试

>>> userNum(5)
Enter a number for sound: 2
Enter a number for sound: 3
Enter a number for sound: 1
Enter a number for sound: 5
Enter a number for sound: 9
[2, 3, 1, 5, 9]

def userNum(迭代次数):

number_list = []

while iterations > 0:
    number = int(input("Enter a number for sound : "))
    number_list.append(number)
    iterations = iterations - 1
return number_list

打印"Numbers List - {0}".format(userNum(5))

为声音输入一个数字:9

为声音输入一个数字:1

为声音输入一个数字:2

为声音输入一个数字:0

为声音输入一个数字:5

号码列表 - [9, 1, 2, 0, 5]

您可以简单地 return 列表 comp:

def userNum(iterations):
    return [int(input("Enter a number for sound: ")) for _ in range(iterations) ]

如果您使用的是循环,则应使用 while 循环并使用 try/except:

验证输入
def user_num(iterations):
    my_list = []
    i = 0
    while i < iterations:
        try:
            inp = int(input("Enter a number for sound: "))
        except ValueError:
            print("Invalid input")
            continue
        i += 1
        my_list.append(inp)
    return my_list