以下代码按预期工作。我想确保输入的所有数据都是整数。非整数应该得到错误消息。我的while循环适用于第一个输入,其中询问用户输入的数字#。 但是,它不会捕获后续输入的错误。
while True:
try:
userIn = int(input("Input no of numbers :"))
userNums = []
uNums = []
print("Type " + str(userIn) + " numbers in list :")
for index in range(int(userIn)):
userNums.append(input("entry" + str(index+1) +" = "))
for number in userNums:
if number not in uNums:
uNums.append(number)
print("unique number counted")
for uNum in uNums:
print(str(uNum) + " count is " + str(userNums.count(uNum)) + "times")
break
except:
print("Error. only ints allowed")
答案 0 :(得分:1)
您实际上并没有尝试在任何时候转换为整数。下面只保存字符串。
for index in range(int(userIn)):
userNums.append(input("entry" + str(index+1) +" = "))
顺便说一下,你可以摆脱以下几点:
for number in userNums:
if number not in uNums:
uNums.append(number)
如果您设置userNum
一套 - userNum = set()
- 其中只能包含唯一值。
答案 1 :(得分:1)
你的主要错误是遗忘的int():
for index in range(userIn):
num = int(input("entry" + str(index+1) +" = "))
userNums.append(num)
但是,如果输入错误,整个程序仍然需要重新启动,因此我建议尝试一下,除非有需要。你也倾向于:
1.无需转换变量
2.使用+
和str()
,这可能不是最好的习惯
此代码应该是直接的,并且定制的INPUT功能在将来可能会有用:)
def INPUT(InputText):
"""customized input handling"""
while True:
try:
return int(input(InputText))
except ValueError:
print ("Error: Only integers accepted")
#note: you could wrap the code below in a function
# and call the function afterwards if you want:
userIn = INPUT("Input no of numbers :")
userNums = []
uNums = []
print("Type {} numbers in list :".format(userIn))
for index in range(userIn):
num = INPUT("entry {} = ".format(index+1))
userNums.append(num)
for number in userNums:
if number not in uNums:
uNums.append(number)
print("unique number counted")
for uNum in uNums:
print("{} count is {} times".format(uNum,userNums.count(uNum)))
答案 2 :(得分:0)
您没有将后续输入转换为int()。
你需要像
这样的东西userNums.append(int(input("entry" + str(index+1) +" = ")))
答案 3 :(得分:0)
以下解决方案应该有效。主要变化:
(1)添加了明确的ValueError
检查,因为这是一种很好的做法
(2)添加了明确的continue
,因为这也是一种很好的做法
(3)合并else
条款以创建try
/ except
/ else
结构。
(4)将try
/ except
添加到数字输入代码的循环中
(5)使用set
获取列表的唯一项目。
while True:
try:
userIn = int(input("Input no of numbers :"))
except ValueError:
print("Error: only ints allowed")
continue
else:
userNums = []
print("Type " + str(userIn) + " numbers in list :")
for index in range(int(userIn)):
while True:
try:
x = int(input("entry" + str(index+1) +" = "))
userNums.append(x)
break
except ValueError:
print("Error: only ints allowed")
continue
uNums = set(userNums)
print("Unique numbers counted:")
for uNum in uNums:
print(str(uNum) + " count is " + str(userNums.count(uNum)) + " times")
break