Python 如何输入非数字来打印其他内容,而不是使用while循环出错?
我必须计算给定数字的阶乘,这些数字的输入是4、9和abc123。 这是我到目前为止的编码,但对于abc123,错误就在这里。如何编辑此文件,使其不显示错误,而是打印其他内容Python 如何输入非数字来打印其他内容,而不是使用while循环出错?,python,math,while-loop,Python,Math,While Loop,我必须计算给定数字的阶乘,这些数字的输入是4、9和abc123。 这是我到目前为止的编码,但对于abc123,错误就在这里。如何编辑此文件,使其不显示错误,而是打印其他内容 for i in range(0,2): num = int(input('Enter a number: ')) factorial = 1 if num < 0: print('Sorry! Factorials cannot be negative numbers.') else:
for i in range(0,2):
num = int(input('Enter a number: '))
factorial = 1
if num < 0:
print('Sorry! Factorials cannot be negative numbers.')
else:
for i in range(1, num + 1):
factorial = factorial*i
print(num, '!=', factorial)
范围(0,2)内的i的:
num=int(输入('输入一个数字:'))
阶乘=1
如果num<0:
print('对不起!阶乘不能是负数')
其他:
对于范围内的i(1,num+1):
阶乘=阶乘*i
打印(数字,!=,阶乘)
您可以使用try except
将非整数处理为:
for i in range(0,3):
try:
num = int(input('Enter a number: '))
factorial = 1
if num < 0:
print('Sorry! Factorials cannot be negative numbers.')
else:
for i in range(1, num + 1):
factorial = factorial*i
print(num, '!=', factorial)
except Exception as ex:
print("Invalid input. Try again")
范围(0,3)内的i的:
尝试:
num=int(输入('输入一个数字:'))
阶乘=1
如果num<0:
print('对不起!阶乘不能是负数')
其他:
对于范围内的i(1,num+1):
阶乘=阶乘*i
打印(数字,!=,阶乘)
例外情况除外,例如:
打印(“输入无效,请重试”)
在try/except
块中将您的呼叫包装到int
试试看:
foo=int(输入())
除例外情况外:
打印(“发生异常”)
通过一些关于错误的额外反馈,这可以变得更高级,并且通过只捕获预期的最小异常,也可以说更好
为True时:
_值=输入(“输入一个数字:”)
尝试:
value=int(_值)
除值错误外:
打印(“无效输入!:{}”。格式(_值)
继续#跳到循环的顶部
Python中处理错误的惯用方法是使用try:…除了:…
块:
for i in range(0,2):
inp = input('Enter a number: '))
try:
num = int(inp)
except ValueError:
print('>{}< is not a valid number'.format(num))
continue
factorial = 1
if num < 0:
print('Sorry! Factorials cannot be negative numbers.')
else:
for i in range(1, num + 1):
factorial = factorial*i
print(num, '!=', factorial)
范围(0,2)内的i的:
inp=input('输入一个数字:'))
尝试:
num=int(inp)
除值错误外:
打印(“>{}<不是有效的数字”。格式(num))
持续
阶乘=1
如果num<0:
print('对不起!阶乘不能是负数')
其他:
对于范围内的i(1,num+1):
阶乘=阶乘*i
打印(数字,!=,阶乘)
请注意,exception子句应该只捕获要处理的异常。避免捕获所有异常块,因为它们会默默地吞下各种错误,使某些问题更难诊断…您希望输入“abc123”的输出是什么?由于将输入转换为int,而“abc123”无法转换为int,因此会出现错误。我认为您希望在输入行捕获ValueError并要求用户输入一个数字-这当然取决于此输入的预期行为。请查阅并遵循网站上提供的众多教程之一。