为什么输入"done"会报错?
Why does it give an error when typing "done"?
这是我的问题
你能帮助我吗?
谢谢
写一个程序,让用户反复询问一个数字,直到输入“done”这个词,然后通过输入“done”得到“数字总和”、“数字输入个数”三个值", "数字的平均值"。打印。
您的应用程序应该使用 try 和 except 当用户输入非数字输入时,向他显示“无效输入”错误消息并再次转到数字请求。
像下面的例子:
Enter a number: 4
Enter a number: 5
Enter a number: bad data
Invalid input
Enter a number: 7
Enter a number: done
16
3
5.333333333333333
我在下面输入代码
while True :
try:
number = input ('Enter number: ')
n = int (number)
except:
print('Invalid input')
if n == 'done' :
break
x = None
y = None
for Total in [n] :
x = x + n
print (x)
for num in [n] :
y = y + 1
print (y)
for Average in [n] :
x = x + n
y = y + 1
aver = x / y
print ( aver)
当我输入“完成”时,它会显示“输入无效”警告
Enter number: 2
Enter number: 3
Enter number: 4
Enter number: done
Invalid input
Enter number:
- 当您键入
'done'
时,number
将等于字符串 'done'
n = int (number)
与 n = int ('done')
相同,这会引发异常,因为 'done'
无法解析为以 10 为底的整数
- 请注意,由于调用
int ('done')
引发了错误,因此 n
的值不会更改
- 所以你得到
except
子句和 print('Invalid input')
- 由于
n
的值保持不变,n == 'done'
是False
- 因此,循环继续
您可以通过在 except
子句中移动支票来修复它:
while True:
try:
number = input ('Enter number: ')
n = int (number)
except:
if number == 'done':
break
print('Invalid input')
还要注意这段代码:
for Total in [n] :
...
...将创建一个包含 one 元素 [n]
的列表并迭代此列表 once,因为只有一个元素。所以,它不会真正计算任何总和。
此外,此代码将尝试向 None
添加一个数字:
x = None
y = None
for Total in [n] :
x = x + n
print (x)
在第一次迭代中,x = x + n
将计算为 x = None + <integer>
,这是无效的,因为 None
无法添加到任何内容。
此外,根据您的输入判断,您想输入 多个 数字,但是第一个 while
循环将用 n
覆盖变量 new 每次迭代的数字,所以所有以前的数字都将丢失。
你应该在某处积累这些数字:
numbers = []
while True:
try:
number = input ('Enter number: ')
n = int (number)
except:
if number == 'done':
break
print('Invalid input')
else:
# There was no exception
numbers.append(n)
这是我的问题 你能帮助我吗? 谢谢
写一个程序,让用户反复询问一个数字,直到输入“done”这个词,然后通过输入“done”得到“数字总和”、“数字输入个数”三个值", "数字的平均值"。打印。 您的应用程序应该使用 try 和 except 当用户输入非数字输入时,向他显示“无效输入”错误消息并再次转到数字请求。 像下面的例子:
Enter a number: 4
Enter a number: 5
Enter a number: bad data
Invalid input
Enter a number: 7
Enter a number: done
16
3
5.333333333333333
我在下面输入代码
while True :
try:
number = input ('Enter number: ')
n = int (number)
except:
print('Invalid input')
if n == 'done' :
break
x = None
y = None
for Total in [n] :
x = x + n
print (x)
for num in [n] :
y = y + 1
print (y)
for Average in [n] :
x = x + n
y = y + 1
aver = x / y
print ( aver)
当我输入“完成”时,它会显示“输入无效”警告
Enter number: 2
Enter number: 3
Enter number: 4
Enter number: done
Invalid input
Enter number:
- 当您键入
'done'
时,number
将等于字符串'done'
n = int (number)
与n = int ('done')
相同,这会引发异常,因为'done'
无法解析为以 10 为底的整数- 请注意,由于调用
int ('done')
引发了错误,因此n
的值不会更改
- 请注意,由于调用
- 所以你得到
except
子句和print('Invalid input')
- 由于
n
的值保持不变,n == 'done'
是False
- 因此,循环继续
您可以通过在 except
子句中移动支票来修复它:
while True:
try:
number = input ('Enter number: ')
n = int (number)
except:
if number == 'done':
break
print('Invalid input')
还要注意这段代码:
for Total in [n] :
...
...将创建一个包含 one 元素 [n]
的列表并迭代此列表 once,因为只有一个元素。所以,它不会真正计算任何总和。
此外,此代码将尝试向 None
添加一个数字:
x = None
y = None
for Total in [n] :
x = x + n
print (x)
在第一次迭代中,x = x + n
将计算为 x = None + <integer>
,这是无效的,因为 None
无法添加到任何内容。
此外,根据您的输入判断,您想输入 多个 数字,但是第一个 while
循环将用 n
覆盖变量 new 每次迭代的数字,所以所有以前的数字都将丢失。
你应该在某处积累这些数字:
numbers = []
while True:
try:
number = input ('Enter number: ')
n = int (number)
except:
if number == 'done':
break
print('Invalid input')
else:
# There was no exception
numbers.append(n)