我正在尝试用Python写一些像钢琴一样的东西。用户输入的每个号码将播放不同的声音。
我遇到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 :(得分: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