Python Try/Except函数使用报错:TypeError参数错误求助
问题分析与解决
错误原因
- 第6行语法错误:
print(miles = int(input("Enter amount of miles driven: ")))写法错误。Python会把miles=解析为传递给print()函数的关键字参数,但print()根本不接受名为miles的参数,因此触发TypeError。你想要的是先赋值给miles再打印,不能把赋值操作直接写在print()的参数里。 - 异常处理范围错误:你写的
try/except块和convert_distance()函数是独立的,调用函数时,函数内部的int(input(...))没有被异常处理覆盖,导致输入非数字时,函数依然会抛出未被捕获的ValueError。
修正后的代码
把异常逻辑整合到函数内部,确保所有可能出错的输入转换都被覆盖:
def convert_distance(): try: miles = int(input("Enter amount of miles driven: ")) kilometers = miles * 1.609 print(f"At {miles} miles, your distance in kilometers is: {kilometers}") except ValueError: print("That is not a number. Please enter a number") convert_distance()
代码说明
- 将可能抛出
ValueError的输入转换代码(int(input(...)))放入try块,一旦输入不是整数,就会触发except块的错误提示。 - 输入合法整数时,正常执行距离转换并打印结果。
额外说明
如果非要单独用try/except处理输入(不整合到函数),正确写法是先赋值再打印:
def convert_distance(miles): kilometers = miles * 1.609 print(f"At {miles} miles, your distance in kilometers is: {kilometers}") try: miles = int(input("Enter amount of miles driven: ")) convert_distance(miles) except ValueError: print("That is not a number. Please enter a number")
内容的提问来源于stack exchange,提问作者Rachroxit
相关产品推荐
相关产品推荐

