前言
在Python中
raw = input("输入 姓名 年龄 以添加,单独回车结束:").strip()
if not raw:
...其中if not不是很理解,简单记录一下。
正文
步入正文。
深入分析
一行一行分析。
input(...)读取你输入的一行.strip()去掉首尾的空格和换行符raw最后是个字符串not是"取反",if not raw:就是 "如果 raw 不成立"。
字符串在 if 里有个特殊规则:有内容算"成立",没内容算"不成立"。
| 在 |
|
| 不成立 | ✅ 进入 |
| 不成立 | ✅ 进入 |
| 成立 | ❌ 不进入 |
| 成立 | ❌ 不进入 |
注意最后一行:"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"
...参考文章
- AI
- Python文档
