如何用Python实现摄氏度与华氏度互相转换程序,含输入校验与循环逻辑
摄氏度与华氏度转换Python程序实现
原有代码核心问题
isdigit()调用逻辑错误:该方法返回布尔值,直接转换为int只能得到1或0,无法提取输入的实际数值- 未覆盖输入1个、2个值的默认规则场景
- 缺少温度转换核心逻辑、for循环遍历温度序列的实现
- 缺少无效输入次数、成功转换次数的统计模块
- 缺少转换完成后的重试判断和最终统计结果输出
完整可运行代码
# 初始化统计计数器 invalid_input_count = 0 success_convert_count = 0 while True: # 第一步:选择转换单位 while True: unit = input("请输入要转换的原单位(Celsius 或 Fahrenheit):").strip() if unit.lower() in ["celsius", "c"]: unit_type = "C" break elif unit.lower() in ["fahrenheit", "f"]: unit_type = "F" break else: invalid_input_count += 1 print("输入无效,请输入正确的单位") # 第二步:输入范围参数 while True: range_input = input("请输入用星号分隔的起始值、结束值、步长:").strip() # 兼容带空格的输入格式,比如 0 * 100 * 3 parts = [p.strip() for p in range_input.split("*")] # 校验输入为数字格式 try: nums = [int(p) for p in parts] except ValueError: invalid_input_count += 1 print("输入错误,请输入数字格式的参数") continue # 处理不同长度的输入规则 if len(nums) == 1: start = 1 end = nums[0] interval = 2 elif len(nums) == 2: start, end = nums interval = -2 if start > end else 2 elif len(nums) == 3: start, end, interval = nums # 校验步长合法性 if start < end and interval <= 0: invalid_input_count += 1 print("参数错误:起始值小于结束值时步长必须为正数") continue if start > end and interval >= 0: invalid_input_count += 1 print("参数错误:起始值大于结束值时步长必须为负数") continue if start == end: invalid_input_count += 1 print("参数错误:起始值和结束值不能相等") continue else: invalid_input_count += 1 print("参数数量错误,最多输入3个参数") continue # 参数校验通过跳出循环 break # 第三步:for循环实现温度转换与输出 print(f"{'摄氏度' if unit_type == 'C' else '华氏度':<10} {'华氏度' if unit_type == 'C' else '摄氏度':<10}") print("-"*20) # 适配正负步长调整range边界 adjust = 1 if interval > 0 else -1 for temp in range(start, end + adjust, interval): if unit_type == "C": # 摄氏度转华氏度公式 converted = temp * 9 / 5 + 32 else: # 华氏度转摄氏度公式 converted = (temp - 32) * 5 / 9 print(f"{temp:<12} {converted:.2f}") # 成功转换次数计数 success_convert_count += 1 # 第四步:询问是否重试 retry = input("是否要继续转换?(y/n):").strip().lower() if retry != "y": break # 输出最终统计结果 print("\nThank you") print(f"全程序运行期间无效输入总次数:{invalid_input_count}") print(f"成功完成温度转换的次数:{success_convert_count}")
内容的提问来源于stack exchange,提问作者Yuzuki Yuki
相关产品推荐
相关产品推荐

