查看: 88|回复: 3

Python零基础入门:格式化输出、运算符与字符编码避坑指南

[复制链接]
发表于 1 小时前 | 显示全部楼层 |阅读模式
Python 入门的三座大山——格式化输出、运算符和字符编码,几乎每个新手都会踩坑。本文结合实操代码,梳理常见错误和正确写法,帮你一次搞定这些基础语法。

## 格式化输出的三种方式

Python 目前主流格式化方式有三种:%占位符、str.format() 和 f-string。零基础建议优先掌握 % 占位符(兼容旧代码)和 f-string(Python 3.6+ 推荐,简洁直观)。% 占位符需要严格区分数据类型:%s 是万能占位符,可接收任意类型;%d 只接收整数,传入字符串会报错;%f 接收浮点数,默认保留6位小数,可用 %.2f 限定精度。
  1. name = input("请输入姓名:")
  2. age = int(input("请输入年龄:"))  # 强制转型适配%d
  3. height = float(input("请输入身高(m):"))
  4. address = input("请输入所在地:")
  5. user_info = '''
  6. ========== 用户信息卡片 ==========
  7. 姓名:%s
  8. 年龄:%d 岁
  9. 身高:%.2f m
  10. 所在地:%s
  11. ================================
  12. ''' % (name, age, height, address)
  13. print(user_info)
复制代码

如果在 % 格式化字符串中要输出原生百分号,必须用 %% 转义;无占位符的普通字符串直接写 % 即可。
  1. print("我叫%s,今年%d岁,已掌握3%%的Python基础语法" % (name, age))
  2. print("当前学习进度:100%")
复制代码

新手最容易犯的错误是忘记类型转换:input() 返回的是字符串,直接传给 %d 或 %f 会报错。务必先用 int() 或 float() 转换。
  1. # 正确写法
  2. age = int(input("年龄:"))
  3. print("年龄:%d" % age)
复制代码

F-string 则完全不用操心占位符和类型,直接在 {} 里写变量或表达式:
  1. name = "Tom"
  2. score = 92.5
  3. print(f"学生姓名:{name},考试分数:{score:.1f}")
  4. print(f"总分翻倍:{score * 2}")
复制代码

## 运算符及优先级、短路规则

算术运算符包括 +、-、*、/(浮点除法)、//(整除)、%(取模)、**(幂)。注意 / 的结果一定是小数。比较运算符(==、!=、>、<、>=、<=)返回 True/False。赋值运算符(+=、-=、*=、/= 等)用于简化变量更新。

逻辑运算符 and、or、not 的优先级:括号 > not > and > or。短路规则是面试高频考点:x or y,如果 x 为真直接返回 x;x and y,如果 x 为假直接返回 x。
  1. print(8 or 4)   # 8
  2. print(0 and 3)  # 0
  3. print(not 0)    # True
复制代码

## 字符编码与乱码根治

编码混乱是 Python 新手最常见的报错来源。主流编码:ASCII(1字节,仅英文)、GBK(2字节,中文国标)、UTF-8(变长,英文1字节/中文3字节,互联网标准)。Python 3 默认 UTF-8,原生支持中文,无需额外声明;Python 2 默认 ASCII,文件含中文必须在首行加 # -*- coding:utf-8 -*-。

乱码的根本原因是文件保存编码与程序读取编码不一致。最佳实践:所有 Python 文件统一保存为 UTF-8 编码,从源头杜绝乱码。

## 补充:while-else、pass、成员运算符

while-else:循环正常结束(无 break)才执行 else 块。
  1. index = 1
  2. while index < 5:
  3.     if index == 3:
  4.         break
  5.     print("当前数字:", index)
  6.     index += 1
  7. else:
  8.     print("循环无中断,正常结束")
复制代码

pass 用于占位,避免缩进报错。

in / not in 可判断元素是否存在于字符串或列表中,常用于敏感词过滤。
  1. comment = input("请输入评论内容:")
  2. if "垃圾" in comment or "违规" in comment:
  3.     print("评论包含敏感词,发布失败")
  4. else:
  5.     print("评论发布成功!")
复制代码

## 新手高频报错总结

- 格式化报错:%d 传入字符串 → 先用 int()/float() 转换
- 百分号显示异常:格式化内用 %% 转义,普通字符串直接用 %
- 逻辑判断报错:区分赋值 = 和比较 ==,条件判断必须用双等号
- 中文乱码:Python2 头部声明编码,所有文件保存为 UTF-8
- while-else 不执行:检查是否被 break 强制跳出
- 缩进报错:空代码块必须加 pass 占位

掌握这些基础语法,后续的学习会顺畅很多。建议将上述代码逐行运行一遍,加深理解。
回复

使用道具 举报

发表于 1 小时前 | 显示全部楼层

Re: Python零基础入门:格式化输出、运算符与字符编码避坑指南

非常感谢楼主的分享,写得非常清晰详细!作为刚接触Python的萌新,这些内容正好是我最头疼的地方。特别是格式化输出里%d和%s的混用,之前总是忘掉类型转换,看到“int()/float()强制转型”这个提醒立刻明白问题出在哪了。还有while-else的机制,之前一直以为else只在条件不成立时执行,原来是要循环正常结束才触发——这个坑踩过好几次。另外f-string那个写法真的太方便了,不用再纠结占位符,打算以后主学它。希望楼主以后多出这样的避坑指南,对新手超实用!
回复 支持 反对

使用道具 举报

发表于 1 小时前 | 显示全部楼层

Re: Python零基础入门:格式化输出、运算符与字符编码避坑指南

感谢楼主的详细整理,非常实用!特别是字符编码那块,以前在Python 2时代经常踩坑,现在统一用UTF-8确实省心很多。 关于格式化,我补充一点:f-string里还可以直接调用函数和运算,比如 `f"你的名字长度:{len(name)}"`,新手可能不知道这个。另外短路规则那个例子挺经典,建议再举个实际场景,比如 `user_input = input("输入内容:") or "默认值"`,省去if判断。 想问下楼主:后面会不会再讲讲字符串的常用方法,比如strip、split这些?跟格式化配合起来能解决很多实际需求。
回复 支持 反对

使用道具 举报

发表于 1 小时前 | 显示全部楼层

Re: Python零基础入门:格式化输出、运算符与字符编码避坑指南

感谢分享!这篇总结很实用,特别是新手容易踩的坑都点得很清楚。 之前用 `%d` 格式化时总忘记把 input 转成 int,看了你的例子才真正明白原因。`%%` 转义百分号也是个容易忽略的细节,F-string 确实省心不少。 逻辑运算符的短路规则也讲得很直观,之前面试被问到 `0 and 3` 的结果时还犹豫过,现在记住了。while-else 和成员运算符的例子也很接地气,拿去练习了。 如果能把这三部分代码自己敲一遍,应该就能避免大多数入门报错了。谢谢整理!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-7-8 10:35 , Processed in 0.028608 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部