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

如何基于数据类型校验用户输入,用if/else或try/except校验num1、num2合法性

数字输入校验实现方案

方案1:try/except实现(更推荐)

Python 官方更推荐用异常捕获处理输入转换场景,无需手动判断各种字符串边界情况,逻辑更简洁。核心逻辑为:尝试将输入字符串转为int类型,若转换抛出ValueError则说明输入不是合法数字,直接输出错误提示即可。

修改后的完整代码如下:

print("\n 选择运算类型 \n")
print("输入1 执行加法")
print("输入2 执行减法")
print("输入3 执行乘法")
print("输入4 执行除法 \n")

while True:
    user = input("请输入选择(1/2/3/4): ")
    if user in ('1','2','3','4'):
        # 捕获非数字输入异常
        try:
            num1 = int(input("输入第一个数字: "))
            num2 = int(input("输入第二个数字: "))
        except ValueError:
            print("错误:输入不是合法数字,请重新操作")
            continue
        
        if user == '1':
            print(f"{num1} + {num2} = {num1 + num2}")
            print("感谢使用本计算器")
        elif user == '2':
            print(f"{num1} - {num2} = {num1 - num2}")
            print("感谢使用本计算器")
        elif user == '3':
            print(f"{num1} * {num2} = {num1 * num2}")
            print("感谢使用本计算器")
        elif user == '4':
            # 可选:额外捕获除法除零异常
            try:
                print(f"{num1} / {num2} = {num1 / num2}")
                print("感谢使用本计算器")
            except ZeroDivisionError:
                print("错误:除数不能为0")
        else:
            print("请输入正确的选项")
    else:
        print("无效输入")

方案2:if/else实现

如果要求必须用条件判断实现,可以通过字符串方法校验合法性,仅校验正整数直接用str.isdigit()即可,需要支持负数则要额外处理负号的情况。示例校验逻辑如下:

def is_valid_number(s):
    # 支持负整数校验
    if s.startswith('-'):
        return s[1:].isdigit()
    return s.isdigit()

# 替换原代码中获取num1、num2的部分即可
num1_str = input("输入第一个数字: ")
num2_str = input("输入第二个数字: ")
if not (is_valid_number(num1_str) and is_valid_number(num2_str)):
    print("错误:输入不是合法数字,请重新操作")
    continue
num1 = int(num1_str)
num2 = int(num2_str)

注意:isdigit()仅能识别整数,若后续需要支持小数输入,该方案需要额外判断小数点的个数和位置,实现复杂度远高于try/except方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:18:04