Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 ValueError与Except语句仍然存在_Python_Except - Fatal编程技术网

Python ValueError与Except语句仍然存在

Python ValueError与Except语句仍然存在,python,except,Python,Except,我正在尝试创建一个程序来探索collatz序列。直到我尝试添加try和except语句,以确保用户输入的是数字而不是文本,它才起作用。代码如下: def collatz(number): try: if number % 2 == 0: print(number // 2) return number // 2 elif number % 2 == 1: result = 3 * nu

我正在尝试创建一个程序来探索collatz序列。直到我尝试添加
try
except
语句,以确保用户输入的是数字而不是文本,它才起作用。代码如下:

def collatz(number):
    try:
        if number % 2 == 0:
            print(number // 2)
            return number // 2
        elif number % 2 == 1:
            result = 3 * number + 1
            print(result)
            return result
    except ValueError:
        print('That is not a number')

print('Enter a number')
n = int(input())

while n != 1:
    n = collatz(int(n))
如果我输入数字,我可以毫无问题地运行它。然而,当我输入单词“puppy”时,我会遇到以下情况:

回溯(最近一次呼叫最后一次):
文件“C:/Users/kredeker/Desktop/python/collatz2.py”,第14行,在
n=int(输入())
ValueError:以10为基数的int()的文本无效:“puppy”
我以为我是在用这个来解释
ValueError

except ValueError:
    print('That is not a number')

您在
n=int(input())
处收到错误

所以试着去做吧

try:
  n = int(input())
except ValueError:
  print('That is not a number')
完整的代码(这样您就不会出现“n”错误):


您在
n=int(input())
处收到错误

所以试着去做吧

try:
  n = int(input())
except ValueError:
  print('That is not a number')
完整的代码(这样您就不会出现“n”错误):


try…except
仅适用于在这些字之间运行的代码,包括函数调用。正如回溯所示,您的异常发生在第14行:

n = int(input())  # <---

n=int(input())#try…except
仅适用于在这些字之间运行的代码,包括函数调用。正如回溯所示,您的异常发生在第14行:

n = int(input())  # <---

n=int(input())#异常处理在函数中完成
n=int(input())
不在函数范围内。您可以删除int调用
n=input()
异常处理在函数中完成
n=int(input())
不在函数范围内。您可以删除int调用
n=input()
函数中的
collatz()
任何代码都不会抛出
ValueError
异常,不需要保留
try…除了该函数中的
。您对
int()
的调用仍然是多余的:
n=collatz(n)
就可以了。
collatz()
函数中的任何代码都不会抛出
ValueError
异常,除了该函数中的
之外,没有必要保留
try.。您对
int()
仍有多余的调用:
n=collatz(n)
就可以了。