我的任务是创建一个程序,计算从1-100开始的数字。
我现在遇到的问题是使用.split将每个输入分配给一个变量,但是只要它超过10,用户就可以输入多少个数字。我很确定我需要使用一个某种类型的清单,但我的知识是有限的,并希望得到一些指导!
numberList = input("Enter 1 to 100 ")
Check = numberList.replace(" ","")
编写一个循环,连续解析输入并将识别的数字添加到列表中,直到该列表至少有10个数字。
numbers = []
while True:
n = 10 - len(numbers)
if n <= 0:
break
s = input("Enter at least {} more numbers: ".format(n))
for v in s.split(" "):
try:
v = int(v)
except ValueError:
continue
numbers.append(v)
因此,如果用户输入错误,您需要创建一个整数列表并打印错误。遵循“请求宽恕比获得许可更容易”的原则。也就是说,只需尝试将数字转换为整数,如果某些内容失败则中止任务。例如:
while True:
userInput = input("Enter at least 10 integers between 1 and 100: ")
try:
numberList = [int(substring) for substring in userInput.split(" ")]
if len(numberList) < 10:
print("Enter at least 10 numbers")
else:
break
except ValueError:
print("You entered a non-numeric character; please try again")
最后,您想要计算每个数字的出现次数。最好的方法(在我看来)是Counter系列。有了这个,你只需要做以下事情
from collections import Counter
counter = Counter(numberList)
分割输入,从我猜测你的问题看起来像'1 2 45 12'
,只需使用.split(' ')
,正如其他人已经指出的那样。这将为您提供值的列表,但是以字符串格式。要将它们转换为整数,可以使用map,它将对列表的每个元素应用一个操作并返回一个迭代器,该迭代器可以转换为新的列表:
numberList = list(map(int, numberList))
如果该列表中的某个元素无法转换为整数,则会引发ValueError
异常。使用try... except
捕获它以打印您的错误消息。
对于第二部分,我将简单地遍历列表中的所有项目,使用list.count(item)
(info)将返回该项目的出现次数,并将已经检查过的每个项目存储在单独的列表中以避免双重 - 检查任何。
码:
numberList = input("Enter at least 10 integers between 1 and 100: ").split(' ')
if len(numberList) < 10:
numberList.extend(input("Enter at least {} more integers between 1 and 100: ".format(10-len(numberList))).split(' '))
try:
numberList = list(map(int, numberList))
except ValueError:
print("You entered a non-numeric character; please try again!")
print("You have entered {} integers.".format(len(numberList)))
checked_list = []
for i in numberList:
if i not in checked_list:
print("The integer {} occured {} time(s).".format(i, numberList.count(i)))
checked_list.append(i)
输出:
Enter at least 10 integers between 1 and 100: 1 2 3 4 5 6 7
Enter at least 3 more integers between 1 and 100: 8 1 2
You have entered 10 integers.
The integer 1 occured 2 time(s).
The integer 2 occured 2 time(s).
The integer 3 occured 1 time(s).
The integer 4 occured 1 time(s).
The integer 5 occured 1 time(s).
The integer 6 occured 1 time(s).
The integer 7 occured 1 time(s).
The integer 8 occured 1 time(s).
你可以这样做:
numberList = input("Enter at least 10 integers between 1 and 100: ").split(" ")
if len(numberList) < 10:
print("Enter at least 10 integers between 1 and 100: ")
要计算每个数字出现的次数:
from collections import Counter
count = Counter(numberList) # eg count = [1,4,9,7,1]
for k,v in count.items():
print(str(k) + " appears " + str(v) + " times")