Python非空判断与类型检查写法

Python非空判断与类型检查写法


一、通用非空判断(变量有没有值)

Python 里空值、空字符串、空列表、0、None 都是"假值" ,可以直接用 if x: 判断。

1. 判断变量不是 None

python 复制代码
x = None

if x is not None:
    print("有值")
else:
    print("没有值")

推荐用 is not None ,不要用 != None

2. 判断变量"有值"(非空、非零、非 None)

python 复制代码
x = ""

if x:
    print("有值")
else:
    print("空值")

这种写法能同时排除:None""[]{}00.0False

3. 两者的区别

python 复制代码
x = 0

print(bool(x))          # False,0 是假值
print(x is not None)    # True,0 不是 None

if x:                   # 不会进
    print("有值")

if x is not None:       # 会进
    print("不是 None")

关键 :如果 0 是合法值,就不能用 if x:,要用 if x is not None:


二、输入内容非空判断

用户输入用 input(),返回的是字符串。空输入就是 ""

1. 基本判断

python 复制代码
user_input = input("请输入内容: ")

if user_input:
    print(f"你输入了: {user_input}")
else:
    print("输入不能为空")

2. 忽略前后空格

用户可能只输入空格," " 不是空字符串,但实际没内容。

python 复制代码
user_input = input("请输入内容: ")

if user_input.strip():
    print(f"你输入了: {user_input.strip()}")
else:
    print("输入不能为空")

推荐用 strip(),能排除纯空格、纯制表符的输入。

3. 循环直到输入非空

python 复制代码
while True:
    user_input = input("请输入内容: ").strip()
    if user_input:
        break
    print("输入不能为空,请重新输入")

print(f"你输入了: {user_input}")

4. 判断是否为数字输入

python 复制代码
user_input = input("请输入一个数字: ").strip()

if not user_input:
    print("输入不能为空")
elif not user_input.isdigit():
    print("请输入纯数字")
else:
    num = int(user_input)
    print(f"你输入的数字是: {num}")

注意:isdigit() 只能判断非负整数,负数、小数不行。

更通用的写法:

python 复制代码
user_input = input("请输入一个数字: ").strip()

if not user_input:
    print("输入不能为空")
else:
    try:
        num = float(user_input)
        print(f"你输入的数字是: {num}")
    except ValueError:
        print("输入的不是有效数字")

三、数字非空判断

数字没有"空"的概念,但有两种情况需要判断:

1. 判断数字不是 None

python 复制代码
num = None

if num is not None:
    print(f"数字是 {num}")
else:
    print("没有数字")

2. 判断数字非零

python 复制代码
num = 0

if num:
    print("非零")
else:
    print("是零")

3. 如果 0 是合法值,要区分 None 和 0

python 复制代码
num = 0

if num is None:
    print("没有数字")
elif num == 0:
    print("数字是 0")
else:
    print(f"数字是 {num}")

四、int 型大于 0 判断

1. 基本写法

python 复制代码
num = 5

if isinstance(num, int) and num > 0:
    print("是正整数")
else:
    print("不是正整数")

2. 只判断大于 0

python 复制代码
num = 5

if num > 0:
    print("大于 0")
else:
    print("不大于 0")

3. 严格判断"正整数"(排除 bool 和 float)

python 复制代码
num = 5

if isinstance(num, int) and not isinstance(num, bool) and num > 0:
    print("是正整数")

注意 :Python 里 True 也是 int 的子类,isinstance(True, int)True。如果不想把 True 当数字,要额外排除 bool

python 复制代码
print(isinstance(True, int))   # True
print(True > 0)                # True

4. 结合输入,完整判断

python 复制代码
user_input = input("请输入一个正整数: ").strip()

if not user_input:
    print("输入不能为空")
elif not user_input.isdigit():
    print("请输入纯数字")
else:
    num = int(user_input)
    if num > 0:
        print(f"是正整数: {num}")
    else:
        print("必须大于 0")

isdigit() 已经保证了是非负整数,所以 num >= 0。如果要求严格大于 0,再判断 num > 0

5. 用 try-except 处理更通用的输入

python 复制代码
user_input = input("请输入一个正整数: ").strip()

if not user_input:
    print("输入不能为空")
else:
    try:
        num = int(user_input)
        if num > 0:
            print(f"是正整数: {num}")
        else:
            print("必须大于 0")
    except ValueError:
        print("输入的不是整数")

五、综合模板

python 复制代码
def get_positive_int(prompt="请输入一个正整数: "):
    """循环读取,直到用户输入一个正整数"""
    while True:
        user_input = input(prompt).strip()

        # 非空判断
        if not user_input:
            print("输入不能为空,请重新输入")
            continue

        # 是否为整数
        try:
            num = int(user_input)
        except ValueError:
            print("输入的不是整数,请重新输入")
            continue

        # 是否大于 0
        if num <= 0:
            print("必须大于 0,请重新输入")
            continue

        return num


# 使用
n = get_positive_int()
print(f"你输入的正整数是: {n}")

六、常见写法对照表

场景 推荐写法 说明
变量不是 None if x is not None: 最准确
变量有值(非空非零) if x: 排除 None、""、\[\]、0 等
字符串非空 if s: 空字符串为假
字符串非空(忽略空格) if s.strip(): 排除纯空格
输入非空 if user_input.strip(): 推荐
数字非零 if num: 0 为假
数字不是 None if num is not None: 0 也会进
int 大于 0 if isinstance(num, int) and num > 0: 严格判断
输入是正整数 if user_input.isdigit() and int(user_input) > 0: 只适用非负整数
通用数字输入 try: num = int(s) except ValueError: 最稳

七、一句话总结

需求 写法
判断不是 None if x is not None:
判断有值 if x:
判断字符串非空 if s:if s.strip():
判断输入非空 if user_input.strip():
判断数字非零 if num:
判断 int 大于 0 if isinstance(num, int) and num > 0:
判断输入是正整数 if user_input.isdigit() and int(user_input) > 0:
最稳的输入处理 while True + strip() + try-except

核心记住:

  1. 判断"有没有值"用 if x:,但 0"" 也会被当成假。
  2. 只想排除 None,用 if x is not None:
  3. 输入判断先 strip(),再判空,再转类型。
  4. 转数字用 try-except 最稳,isdigit() 只适合非负整数。
相关推荐
子林super1 小时前
Python list与array关键区别及使用场景
github
子林super1 小时前
Python中None与null的区别
github
u1301303 小时前
GitHub 热榜项目:周榜(2026-09-20)
人工智能·github
u1301305 小时前
GitHub 热榜项目:日榜(2026-09-20)
人工智能·github
逛逛GitHub5 小时前
外网 3500 万人围观的 Jev 模型,有这 10 个神奇玩法。
github
m4Rk_5 小时前
【论文阅读】Agent 记忆机制(76):SEEM——从碎片检索到完整事件重建
论文阅读·人工智能·学习·开源·github
YuePeng+6 小时前
我给 Claude Code 装了这个 SKILL,它开始自己写管理后台了
github
daxiangxm6 小时前
【趣味休息】“围住小猫在线玩”-“困住小猫”,又回来了
数据结构·人工智能·vscode·github·php
tokenKe17 小时前
Tencent BrowserSkill :让 AI Agent 借用你的真实浏览器| 已登录浏览器与编码 Agent 之间的本地桥 |SSP
chrome·开源·github