我有一个关于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
它会给我一个零的错误,因为e不是一个数字(尚未)。你知道吗
有人能给我解释一下如何解决这个问题吗?你知道吗
希望收到你的来信!你知道吗
谨致问候
所以在你的计算中
d = 0.62
和int(0.62) == 0
。所以最后你总是以0来定义。如果我理解正确,您可以使用int()
来确保您的年龄值是整数(即17岁2个月,天数是17岁)。为了实现这一点,您应该只在最终结果中使用int
,例如:最初,你要取的d是一个浮动值。你知道吗
这里您的类型将d值float(0.62)转换为int(0)。此除法操作引发异常。。 解决方案:
ZeroDivisionError
不是由e
不是数字引起的。它是由试图将一个数除以int(d)
引起的,因为int(d)
是零。你知道吗d
是值为0.62的浮点。如果你把它转换成一个整数,你会得到零。你知道吗您可以除以浮点数本身:
那会给你另一个浮动。如果要将其转换为整数,可以将其转换为一:
这不会导致
ZeroDivisionError
,因为d
在代码中显式地非零。你知道吗相关问题 更多 >
编程相关推荐