Python代码调用math.floor后未对数值实现向下取整问题求助
问题根因
math.ceil()、math.floor() 不会修改传入的参数本身,只会返回取整后的新数值。你现有代码仅调用了函数但没有将返回结果赋值给healt变量,原始浮点值没有被覆盖,所以打印的始终是未取整的数值。
修复代码
import random import math difficolty = 3 healt = 50 potion_healt = random.randint(20,50)/3 healt = healt + potion_healt if difficolty < 3: healt = math.ceil(healt) else: healt = math.floor(healt) print(f"You have {healt} ps!")
注意事项
- Python中所有数值运算相关的内置、标准库函数基本都属于无副作用的纯函数,不会修改入参变量,调用后必须主动接收返回值才能拿到计算结果
- 如果有类型转换需求,也可以在赋值时额外套
int()做转换,避免取整后仍为浮点类型(比如math.floor(63.99)返回的是63.0,套int()后会得到整数63)
内容的提问来源于stack exchange,提问作者Cetriolino
相关产品推荐
相关产品推荐

