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

时间:2015-01-09 12:47:10

标签: python list input append python-3.4

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

  1. 系统会提示用户他们希望能够按下多少个键(迭代)。
  2. 系统会提示他们输入的声音数量与迭代次数相同。每个号码都是不同的声音。
  3. 它会发出声音。
  4. 我遇到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]
    

    有什么方法可以让每个号码附加到列表中,或者是否有更有效的方式来执行此操作?

3 个答案:

答案 0 :(得分:1)

你应该在你的函数中做的第一件事是初始化一个空列表。然后,您可以循环正确的次数,并且在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]

答案 1 :(得分:0)

def userNum(iterations):

number_list = []

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

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

输入声音编号:9

输入声音编号:1

输入声音编号:2

输入声音编号:0

输入声音编号:5

数字列表 - [9,1,2,0,5]

答案 2 :(得分:0)

您只需返回列表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