Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何输入非数字来打印其他内容,而不是使用while循环出错?_Python_Math_While Loop - Fatal编程技术网

Python 如何输入非数字来打印其他内容,而不是使用while循环出错?

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:

我必须计算给定数字的阶乘,这些数字的输入是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(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并要求用户输入一个数字-这当然取决于此输入的预期行为。请查阅并遵循网站上提供的众多教程之一。