我的图片 · 在线免费的图片处理工具

前言

在Python中

raw = input("输入 姓名 年龄 以添加,单独回车结束:").strip()
if not raw:
    ...

其中if not不是很理解,简单记录一下。

正文

步入正文。

深入分析

一行一行分析。

  • input(...) 读取你输入的一行
  • .strip() 去掉首尾的空格和换行符
  • raw 最后是个字符串
  • not 是"取反",if not raw: 就是 "如果 raw 不成立"。

字符串在 if 里有个特殊规则:有内容算"成立",没内容算"不成立"。

raw 的值

在 if 里算作

if not raw: 的结果

""(空字符串)

不成立

✅ 进入

" " 去掉空格后变 ""

不成立

✅ 进入

"张三 18"

成立

❌ 不进入

"0"

成立

❌ 不进入

注意最后一行:"0" 虽然是数字 0,但它是字符串,有内容,所以算"成立"。只有空的才算不成立。

所以 if not raw: 在这里的实际意思是:"如果用户直接按了回车(什么都没输入),就……"。这正好对应你那句提示里的"单独回车结束"。

等价写法

下面几种写法意思完全一样:

if not raw:            # 推荐,最简洁
    ...

if raw == "":          # 明确写"等于空字符串"
    ...

if len(raw) == 0:      # 看长度是不是 0
    ...

第一个最常用,后面两个写得太啰嗦,一般只在需要特别清楚的场合用。

扩展知识

不只是字符串,not 对别的类型也一样,只是判断标准不同:

if not x:   # 当 x 是以下值时成立:
# 0        (数字零)
# 0.0      (浮点零)
# ""       (空字符串)
# []       (空列表)
# {}       (空字典)
# None     (没有值)
# False    (假)

一个容易踩的坑:如果你要特别区分"没输入"和"输入了 0",就不能用 if not,得写:

if raw == "":        # 只认空字符串,不认 "0"
    ...

参考文章

  1. AI
  2. Python文档

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

none
暂无评论...