如何将体重转换代码封装为def main函数并实现无效输入重输?
解决方案
我们把原有代码封装成带输入校验、支持返回结果的main()函数,具体实现如下:
完整代码
def get_valid_positive_input(prompt, input_type=float): """获取有效的正数输入,支持整数/浮点数类型校验""" while True: try: user_input = input_type(input(prompt)) if user_input <= 0: print("请输入正数!") continue return user_input except ValueError: print(f"请输入有效的{input_type.__name__}类型数值!") def main(): # 磅转千克功能 pounds = get_valid_positive_input("请输入磅数:", int) kgs = pounds / 2.2046 rounded_kgs = round(kgs) print(f"转换后的千克体重为 {rounded_kgs}") # 地球体重转其他星球体重功能 earth_weight = get_valid_positive_input("请输入您在地球上的体重(千克):") planet_weight_map = { "水星": 0.38, "金星": 0.91, "火星": 0.38, "木星": 2.34, "土星": 1.06, "天王星": 0.92, "海王星": 1.19, "冥王星": 0.06 } calculated_weights = {planet: earth_weight * ratio for planet, ratio in planet_weight_map.items()} for planet, weight in calculated_weights.items(): print(f"{planet}上的体重为 {weight:.2f} 千克。") # 返回所有转换结果,方便后续复用 return { "pounds_converted_to_kgs": rounded_kgs, "planet_weights": calculated_weights } # 执行函数 if __name__ == "__main__": conversion_result = main() # 可选:查看返回结果 # print("转换结果数据:", conversion_result)
关键说明
- 输入校验辅助函数:
get_valid_positive_input统一处理输入错误情况(非数值输入、非正数输入),循环提示用户重新输入,避免代码冗余。 main()函数:整合原有的两个转换逻辑,完成计算后打印结果,同时返回包含所有转换数据的字典,满足返回值要求。- 代码优化:用字典存储星球体重比例,简化循环打印逻辑,让代码更易维护。
内容的提问来源于stack exchange,提问作者Jessica
相关产品推荐
相关产品推荐

