我是Python的新手,我正在尝试创建两个从用户那里获取输入的列表。目前我有一些工作代码,但我相信它仍然可以增强,可以用更短的方式完成。
k1 = []
print("For 1st list enter")
for i in range(5):
a = int(raw_input("Enter your value"))
k1.append(a)
k2 = []
print("For second list enter")
for j in range(5):
b = int(raw_input("Enter your values"))
k2.append(b)
答案 0 :(得分:1)
如果您想让用户一次输入一个号码,列表理解可以让您非常简洁地写下:
list_of_lists = []
for i in range(2):
print ('For list {} enter: '.format(i+1))
list_of_lists.append([int(raw_input("Enter your value")) for query in range(5)])
示例结果:
[[0, 5, 3, 5, 3], [4, 5, 6, 4, 3]]
下一步是学习使用异常处理无效输入。
答案 1 :(得分:0)
您可以提示用户输入以空格分隔的标记字符串,然后将该字符串拆分为这些标记的列表。
例如:
mylist = raw_input().split()
由于您似乎对最多五个整数标记感兴趣,我们应该将拆分的字符串标记转换为整数,并使用切片截断列表:
mylist = map(int, raw_input().split())[:5]
请注意,如果您使用的是Python 3.x,则需要将地图包裹在list()
周围。
此外 - 您可能会发现Code Review社区更适合与您类似的问题。
答案 2 :(得分:0)
列表理解:
In [283]: [int(raw_input("Enter your values")) for i in range(5)]
Enter your values1
Enter your values2
Enter your values3
Enter your values4
Enter your values5
Out[283]: [1, 2, 3, 4, 5]
当然,这假设您的所有输入都是有效的。
否则就像:
def get_int():
try:
return int(raw_input("Enter a number: "))
except (KeyboardInterrupt, ValueError):
return get_int()
添加了例外。你可能不太想在那里使用KeyboardInterrupt,但如果你想阻止他们逃脱循环,直到他们给你10个数字......
In [291]: [get_int() for i in range(10)]
Enter a number: 1
Enter a number: 2
Enter a number: a
Enter a number: 2
Enter a number: 3
Enter a number: 4
Enter a number: 56
Enter a number: 7
Enter a number: 8
Enter a number: 3
Enter a number: a
Enter a number: f
Enter a number: g
Enter a number: dfd
Enter a number: df
Enter a number: df
Enter a number: df
Enter a number: df
Enter a number: a
Enter a number: 9
Out[291]: [1, 2, 2, 3, 4, 56, 7, 8, 3, 9]
答案 3 :(得分:0)
输入:1 4 5 6 6 7 空格分开
然后
data = map(int, raw_input().split())
如果你的 输入:1
2
4
5
每一行都有你的数量。
count = 5
data = [ int(input()) for i in range(count)]
如果进入单个列表,最好给出空格分隔的输入。