如何结合Random与Range实现指定单位的100个随机重量生成
修正后的代码实现
先梳理原代码存在的几个问题:
- 输入验证的
while循环条件错误,应该用and而非or,否则会陷入死循环 - 用
range(10,200)生成的是连续数值,不是随机数,且数量是190个而非要求的100个 - 输出语句里的
"weight_unit"是固定字符串,应该使用变量weight_unit - 代码存在缩进错误,导致逻辑无法正常执行
以下是调整后的完整代码:
import random # 输入验证,确保用户输入正确单位 weight_unit = input("请输入重量单位:kg 或 pounds\n") while weight_unit != 'pounds' and weight_unit != 'kg': weight_unit = input("输入错误,请重新输入 kg 或 pounds\n") # 生成100个10到200范围内的随机重量值 for count in range(1, 101): # 生成10到200之间的随机浮点数(如果需要整数可以用random.randint(10,200)) random_weight = random.uniform(10, 200) if weight_unit == 'pounds': print(f"{weight_unit} {count} = {round(random_weight, 2)} pounds") elif weight_unit == 'kg': # 若需求是直接生成10-200kg的随机值,直接输出round(random_weight,2)即可 # 以下是和原代码逻辑一致的:将随机生成的pounds值转换为kg converted_weight = round(random_weight / 2.204, 2) print(f"{weight_unit} {count} = {converted_weight} kg")
代码说明
- 输入验证部分:通过
while weight_unit != 'pounds' and weight_unit != 'kg'确保只有正确输入才会继续执行 - 随机数生成:用
random.uniform(10,200)生成10到200之间的随机浮点数,若需要整数结果,替换为random.randint(10,200)即可 - 循环控制:用
range(1,101)控制生成100个数值,count作为输出的序号 - 输出格式:使用f-string让输出更简洁,保留两位小数提升可读性
内容的提问来源于stack exchange,提问作者user16674853
相关产品推荐
相关产品推荐

