如何停止while循环使用字符串处理整数



我正在处理来自用户的整数输入,希望用户通过键入"q"来表示他们已经完成了输入。

这是我迄今为止的代码:(还是个初学者,所以不要太刺激我(

def main():
print("Please enter some numbers. Type 'q' to quit.")
count = 0
total = 0
num=[]
num = int(input("Enter a number: "))
while num != "q":
num = int(input("Enter a number: "))
count += 1
total += num
del record[-1]
print (num)
print("The average of the numbers is", total / count)
main()

任何反馈都很有帮助!

运行该代码时,可能会得到一个ValueError。这是python告诉您已经将一个值输入到一个无法处理该类型值的函数中的方法。

查看异常文档以了解更多详细信息。

在这种情况下,您正试图将";q〃;转换为在第6行上期望CCD_ 2的函数。把int()想象成一台只处理整数的机器。你只是想把一封信塞进一台没有处理信件设备的机器里,它非但没有起火,反而拒绝了你的输入,让你休息。

您可能希望将从strint的转换封装在try:语句中以处理异常。

def main():
num = None
while num != "q":
num = input("Enter number: ")
# try handles exceptions and does something with them
try:
num = int(num)
# if an exception of "ValueError" happens, print out a warning and keep going
except ValueError as e:
print(f'that was not a number: {e}')
pass

# if num looks like an integer
if isinstance (num, (int, float)):
print('got a number')

测试:

Enter number: 1
got a number
Enter number: 2
got a number
Enter number: alligator
that was not a number: invalid literal for int() with base 10: 'alligator'
Enter number: -10
got a number
Enter number: 45
got a number
Enter number: 6.0222
that was not a number: invalid literal for int() with base 10: '6.0222'

我让你来弄清楚为什么6.02222";不是数字">

尽可能少地更改代码,您应该。。。

def main():
print("Please enter some numbers. Type 'q' to quit.")
count = 0
total = 0
num=[]
num.append(input("Enter a number: "))
while num[-1] != "q":
num.append(input("Enter a number: "))
count += 1
try:
total += int(num[-1])
except ValueError as e:
print('input not an integer')
break
print (num)
print("The average of the numbers is", total / count)
main()

您可以尝试以下方式:

def main():
num_list = [] #list for holding in user inputs
while True:
my_num = input("Please enter some numbers. Type 'q' to quit.")
if my_num != 'q':
num_list.append(int(my_num)) #add user input as integer to holding list as long as it is not 'q'
else: #if user enters 'q'
print(f'The Average of {num_list} is {sum(num_list)/len(num_list)}') #calculate the average of entered numbers by divide the sum of all list elements by the length of list and display the result
break #terminate loop
main() 

最新更新