Python错误:[ZeroDivisionError:DivisionByZero]

2024-04-24 20:48:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于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不是一个数字(尚未)。你知道吗

有人能给我解释一下如何解决这个问题吗?你知道吗

希望收到你的来信!你知道吗

谨致问候


Tags: 代码ininputageyouris错误what
3条回答

所以在你的计算中d = 0.62int(0.62) == 0。所以最后你总是以0来定义。如果我理解正确,您可以使用int()来确保您的年龄值是整数(即17岁2个月,天数是17岁)。为了实现这一点,您应该只在最终结果中使用int,例如:

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 = e / d
except ZeroDivisionError:
  f = 1
f = int(f)

print('Dear',a,','' in 2019 your age will be ',e,'.',sep='')
print('And your age is',f,'in Venusyears.')
d = 0.62

最初,你要取的d是一个浮动值。你知道吗

f = int(e) / int(d)

这里您的类型将d值float(0.62)转换为int(0)。此除法操作引发异常。。 解决方案:

f = int(e) / d

ZeroDivisionError不是由e不是数字引起的。它是由试图将一个数除以int(d)引起的,因为int(d)是零。你知道吗

d是值为0.62的浮点。如果你把它转换成一个整数,你会得到零。你知道吗

您可以除以浮点数本身:

f = int(e) / d

那会给你另一个浮动。如果要将其转换为整数,可以将其转换为一:

f = int(int(e) / d)

这不会导致ZeroDivisionError,因为d在代码中显式地非零。你知道吗

相关问题 更多 >