我有一个关于我的 python 代码的问题。我还在学习,所以请不要介意任何错误。作业是计算某人在正常年份和金星年份的年龄。
平年很容易,但金星年有点难。
a = input("What is your name? ")
b = input("What is your birth year? ")
c = 2019
d = 0.62
# calculating age
try:
e = int(c) - int(b)
except ZeroDivisionError:
e = 0
# calculating age in venus years
try:
f = int(e) / int(d)
except ZeroDivisionError:
f = 1
print('Dear',a,','' in 2019 your age will be ',e,'.',sep='')
print('And your age is',f,'in Venusyears.')
我遇到的问题是总是将 f 视为 0。但如果我不这样做:
f = int(e) / int(d)
except ZeroDivisionError:
f = 1
它会给我一个 ZeroDivisionError,因为 e 还不是一个数字(还)。
有人可以向我解释如何解决这个问题吗?
希望收到您的来信!
亲切的问候,
最佳答案
ZeroDivisionError
不是由 e
不是数字引起的。这是由于试图将一个数除以 int(d)
引起的,因为 int(d)
为零。
d
是一个值为 0.62 的 float 。如果将其转换为整数,则会得到零。
你可以除以 float 本身:
f = int(e) / d
这会给你另一个 float 。如果你想要它作为一个整数,你可以将它转换为一个:
f = int(int(e) / d)
这不会导致 ZeroDivisionError
,因为 d
在您的代码中明确为非零值。
关于Python 错误 : [ZeroDivisionError: division by zero],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58027537/