2015-01-09 3 views
1

Я пытаюсь написать что-то в 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] 

Есть мысли таким образом, чтобы получить его, чтобы добавить каждый номер в список, или если есть более эффективный способ сделать это?

+0

Вы создаете список * после * цикла 'for', а затем цикл' while', который выполняется только один раз. Почему бы не создать список * перед * циклом 'for' и' append' внутри него? Кроме того, вы должны использовать 'int' not' eval'. – jonrsharpe

ответ

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] 
0

Защита userNum (итерации):

number_list = [] 

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

печать "Число List - {0}" формат (userNum (5))

Enter. номер для звука: 9

Введите числовое значение г для звука: 1

Введите номер для звука: 2

Введите номер для звука: 0

Введите номер для звука: 5

Numbers List - [9, 1, 2, 0, 5]

0

вы можете просто вернуть список комп:

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 
Смежные вопросы