狗龄转人类年龄程序无输入提示,运行仅返回Exit Code 0求助
狗龄转人类年龄程序无输入提示问题解决
我写了一个将狗龄转换为人类年龄的Python程序,但测试时完全没出现预期的输入提示,只显示“Process finished with exit code 0”,找不到问题在哪,代码如下:
def calculator(): dog_age = input("Please enter dog age ") try: dog_age = float(input("what is your dog age?: ")) if dog_age < 0: print("age can not be a negative number") elif dog_age <= 1: print(dog_age * 15) elif dog_age <= 2: print(dog_age * 12) elif dog_age <= 3: print(dog_age * 9.3) elif dog_age <= 4: print(dog_age * 8) elif dog_age <= 5: print(dog_age * 7.2) elif dog_age >= 5: print(dog_age * 7) print("The given dog age", dog_age, "is", round(dog_age, 2),"in human years") except ValueError: print("please enter a valid number")
问题原因
核心问题是你只定义了函数但没调用它。Python里函数定义后不会自动执行,必须显式调用才会运行函数内部的代码,所以程序直接走完定义流程就结束了,根本没执行输入逻辑。
另外还有几个小问题:
- 第一个
input完全多余,你在try块里又重新获取了一次输入,这个值从来没用到 - 分支逻辑冲突:
elif dog_age >=5会和前面的elif dog_age <=5重叠,5岁的情况会触发两个分支 - 输出错误:最后round的是狗龄,不是转换后的人类年龄,逻辑完全错了
修复后的代码
def calculator(): try: dog_age = float(input("what is your dog age?: ")) if dog_age < 0: print("age can not be a negative number") return # 非法年龄直接退出函数 # 计算人类年龄 if dog_age <= 1: human_age = dog_age * 15 elif dog_age <= 2: human_age = dog_age * 12 elif dog_age <= 3: human_age = dog_age * 9.3 elif dog_age <= 4: human_age = dog_age * 8 elif dog_age <= 5: human_age = dog_age * 7.2 else: human_age = dog_age * 7 print(f"The given dog age {dog_age} is {round(human_age, 2)} in human years") except ValueError: print("please enter a valid number") # 必须调用函数才会执行逻辑 calculator()
内容的提问来源于stack exchange,提问作者Don
相关产品推荐
相关产品推荐

