python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python非空判断与类型检查

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

作者:子林super

本文详细介绍了Python中判断变量、输入内容、数字是否为空的实用方法,包括is not None与if x的区别、strip()处理空格输入、isdigit()与try-except的适用场景,并提供了综合模板和对照表,帮助开发者避免常见陷阱,轻松掌握Python非空判断技巧

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

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

1. 判断变量不是 None

x = None

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

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

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

x = ""

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

这种写法能同时排除:None、""、[]、{}、0、0.0、False。

3. 两者的区别

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. 基本判断

user_input = input("请输入内容: ")

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

2. 忽略前后空格

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

user_input = input("请输入内容: ")

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

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

3. 循环直到输入非空

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

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

4. 判断是否为数字输入

user_input = input("请输入一个数字: ").strip()

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

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

更通用的写法:

user_input = input("请输入一个数字: ").strip()

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

三、数字非空判断

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

1. 判断数字不是 None

num = None

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

2. 判断数字非零

num = 0

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

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

num = 0

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

四、int 型大于 0 判断

1. 基本写法

num = 5

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

2. 只判断大于 0

num = 5

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

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

num = 5

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

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

print(isinstance(True, int))   # True
print(True > 0)                # True

4. 结合输入,完整判断

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 处理更通用的输入

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("输入的不是整数")

五、综合模板

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}")

六、常见写法对照表

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

七、一句话总结

需求写法
判断不是 Noneif x is not None:
判断有值if x:
判断字符串非空if s: 或 if s.strip():
判断输入非空if user_input.strip():
判断数字非零if num:
判断 int 大于 0if 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() 只适合非负整数。

到此这篇关于Python非空判断与类型检查写法的文章就介绍到这了,更多相关Python非空判断与类型检查内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文