You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何校验用户输入,避免字符串作为二次函数系数的输入值

问题修复方案

原代码存在的问题

  • 语法错误:a1 = int(a1) or a1 = float(a1) 是非法写法,Python不支持在or逻辑运算符两侧直接写赋值语句
  • 逻辑错误:获取b、c参数的代码中错误引用了a1变量,不会对b、c的用户输入做校验,还会把a的值直接赋给b、c
  • 冗余问题:三个参数的校验逻辑完全重复,没有复用
  • 遗漏依赖:代码最后调用了os.system("pause")但没有导入os模块,运行会报错

修正后代码

import os

# 封装通用的数值输入校验函数,减少重复代码
def get_numeric_input(prompt):
    while True:
        input_val = input(prompt)
        try:
            # 优先尝试转整数,失败则转浮点数,覆盖所有数值类型场景
            return int(input_val) if input_val.lstrip('-').isdigit() else float(input_val)
        except ValueError:
            print("你输入了非数值字符,请按照要求输入数字!")

# 调用函数获取三个系数
a = get_numeric_input("请输入ax²的系数a = ")
b = get_numeric_input("请输入bx的系数b = ")
c = get_numeric_input("请输入常数项系数c = ")

# 测试输出,可根据需要删除
print(f"你输入的三个系数分别为:a={a}, b={b}, c={c}")

os.system("pause")

代码说明

  • 把重复的校验逻辑封装为get_numeric_input函数,传入提示文本即可返回合法的数值,后续新增参数也可以直接调用,不用重复写循环
  • 兼容整数和浮点数输入,只要是合法数值都可以正常接收,非数值输入会触发错误提示要求重新输入
  • 补充了os模块的导入,避免最后暂停代码运行报错
  • 如果你需要保留原波兰语的提示文本,直接替换函数传入的prompt参数和错误提示内容即可

内容的提问来源于stack exchange,提问作者MaksymalnyMaks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:45:03