为什么我在Python中无法将小数与整数相乘

2 投票
2 回答
1608 浏览
提问于 2025-04-18 05:53

我一直在尝试做一个身高计算器,把厘米转换成英尺,这是我的代码:

print "how tall are you (in cm)?"
cm = raw_input()
answer = cm*int(0.03280839)
print answer

我知道这很简单,但我刚开始学习,所以如果你能告诉我哪里有问题,那就太好了。提前谢谢你!

2 个回答

3

首先,当你使用 raw_input() 的时候,它会返回一个字符串。所以你需要用 int(cm) 把它转换成整数。

其次,int(0.03280839) 会把这个数字四舍五入,结果返回 0。你为什么要对这个数字使用 int 呢?直接去掉 int 就可以了。所以最终的代码应该是:

print "how tall are you (in cm)?"
cm = raw_input()
answer = int(cm) * 0.03280839 # use int(cm) to convert the string to integer
print answer
10

cm 是一个字符串。你需要先把它转换成数字(整数或浮点数)。(你不想把你的转换因子变成整数,因为结果会把高度乘以0,这样就没意义了。)

print "how tall are you (in cm)?"
cm = raw_input()
answer = int(cm)*0.03280839
print answer

这可能只是我个人的感觉,但0.03280839这个转换因子对我来说并不明显,而2.54(厘米到英寸的转换)就更容易识别了。你可以让Python帮你把厘米转换成英尺——先转换成英寸,然后再转换成英尺,这样代码会更易读:

answer = int(cm) * 2.54 / 12

或者更好的是,定义一个常量来代替这个“魔法”数字。

FEET_PER_CM = 2.54 / 12  # 2.54 cm/inch ÷ 12 in/foot
# ...
answer = int(cm) * FEET_PER_CM

撰写回答