Python基础语法(一):变量与数据类型、数字与字符串操作、输入输出、注释规范、常见错误排查
欢迎进入Python编程世界的第一道大门。在正式编写任何有意义的程序之前,我们需要先掌握构成代码的基本“积木”:变量如何存储数据、数据有哪些类型、如何与用户交互,以及如何让代码更易读、更健壮。本章将围绕这些核心语法点展开,帮助你建立扎实的语法基础,并学会识别和解决最常见的入门错误。下面这张图展示了本章核心知识点的内在关联,请先建立一个整体认知。
核心原理:变量与数据类型的本质
在Python中,变量是引用内存中数据的名字。与C或Java不同,Python是动态类型语言,你不需要提前声明变量的类型,解释器会根据赋值自动推断。例如,执行 age = 25 时,Python在内存中创建了一个整数对象 25,并让变量名 age 指向它。这种灵活性降低了入门门槛,但也要求开发者对类型有清晰认知。
Python内置了多种数据类型,本章重点掌握四种基础类型:
- 整数(int):表示没有小数部分的数值,如
-3、0、1024。Python 3中整数长度无限制,可以处理任意大的数。 - 浮点数(float):表示带小数的数值,如
3.14、-0.5。注意浮点数存在精度误差,这是计算机存储的固有限制。 - 字符串(str):用单引号、双引号或三引号包裹的字符序列,如
'hello'、"Python"、'''多行文本'''。 - 布尔值(bool):只有
True和False两个值,常用于条件判断。在Python中,布尔值实际上是整型的子类,True等于1,False等于0。
可以使用内置函数 type() 查看变量的数据类型,这是调试时最常用的工具之一。
Name 和 name 是两个不同的变量。推荐使用小写字母加下划线的命名风格(snake_case),如 user_name、total_price,这符合PEP 8编码规范。
数字与字符串操作:方法与技巧
数字类型支持标准的算术运算符:+(加)、-(减)、*(乘)、/(除)、//(整除)、%(取余)、**(幂)。其中 / 的结果总是浮点数,而 // 会向下取整。例如:
print(7 / 2) # 输出 3.5
print(7 // 2) # 输出 3
print(7 % 2) # 输出 1
print(2 ** 3) # 输出 8
字符串操作是日常开发的高频需求。Python提供了丰富的内置方法,以下是最常用的几个:
| 方法/操作 | 示例 | 结果 | 说明 |
|---|---|---|---|
| 拼接 | 'Py' + 'thon' | 'Python' | 使用加号连接字符串 |
| 重复 | 'ab' * 3 | 'ababab' | 字符串乘以整数 |
| 索引 | 'Python'[0] | 'P' | 从0开始,负索引从末尾开始 |
| 切片 | 'Python'[1:4] | 'yth' | 左闭右开区间 |
| 长度 | len('Python') | 6 | 返回字符个数 |
| 大小写转换 | 'hello'.upper() | 'HELLO' | 还有 .lower()、.title() |
| 去除空白 | ' hi '.strip() | 'hi' | 去除两端空格或指定字符 |
| 分割 | 'a,b,c'.split(',') | ['a','b','c'] | 返回列表 |
| 替换 | 'I like Python'.replace('like','love') | 'I love Python' | 替换所有匹配项 |
字符串是不可变对象,所有操作都会返回新字符串,原字符串不变。这在内存管理上是安全的,但频繁拼接大量字符串时效率较低,此时推荐使用 join() 方法。
输入输出:与用户交互的桥梁
程序的价值在于处理数据并产生输出。print() 函数用于向控制台输出内容,支持多个参数,默认用空格分隔,可以通过 sep 参数指定分隔符,通过 end 参数指定结尾字符(默认是换行符 \n)。
print('Hello', 'World', sep='-', end='!\n')
# 输出: Hello-World!
input() 函数用于接收用户输入,它总是返回字符串类型。如果需要数字,必须进行类型转换:
age_str = input('请输入你的年龄: ')
age = int(age_str) # 将字符串转换为整数
print('明年你将是', age + 1, '岁')
这里有一个新手极易踩的坑:如果用户输入了非数字内容(如 'abc'),int() 会抛出 ValueError 异常。在实际项目中,必须对用户输入进行验证和异常处理,这将在后续章节详细讲解。
input() 的结果进行算术运算。例如 input('数字: ') * 2 不会得到数字的两倍,而是将字符串重复两次。务必先转换类型。
注释规范:让代码会说话
注释是代码的重要组成部分,它不会被执行,但能极大提升代码的可读性和可维护性。Python支持两种注释方式:
- 单行注释:使用
#开头,适用于简短说明。 - 多行注释:使用三引号
'''或"""包裹,通常用于函数、类的文档字符串(docstring)。
# 计算圆的面积
radius = 5 # 半径,单位:厘米
pi = 3.14159
def calculate_area(r):
"""根据半径计算圆的面积。
参数:
r (float): 圆的半径
返回:
float: 面积值
"""
return pi * r * r
print(calculate_area(radius))
良好的注释习惯包括:在关键算法处说明思路、在复杂逻辑处解释原因、在TODO处标记待办事项。但也要避免过度注释——代码本身应该清晰,注释应补充代码无法表达的信息。
常见错误排查:从报错中学习
初学者遇到报错时容易慌张,其实错误信息是Python给我们的最好提示。以下是四种最常见的错误类型及排查思路:
| 错误类型 | 典型场景 | 错误信息示例 | 解决方案 |
|---|---|---|---|
| SyntaxError | 拼写错误、缺少冒号、括号不匹配 | SyntaxError: invalid syntax | 检查出错行附近的语法,注意中英文标点 |
| NameError | 变量名拼写错误或未定义 | NameError: name 'age' is not defined | 确认变量是否已赋值,检查拼写 |
| TypeError | 对不兼容的类型进行操作 | TypeError: can only concatenate str (not "int") to str | 使用 str()、int() 等函数统一类型 |
| ValueError | 类型正确但值不合法 | ValueError: invalid literal for int() with base 10: 'abc' | 先验证输入内容,或使用异常处理 |
排查错误时,遵循以下流程:1) 仔细阅读最后一行错误信息,它指出了错误类型和原因;2) 查看错误信息中提到的文件路径和行号;3) 回溯检查该行使用的所有变量和函数;4) 使用 print() 在关键位置输出中间值,定位问题源头。
score1 = input('第一门: ')
score2 = input('第二门: ')
score3 = input('第三门: ')
average = (score1 + score2 + score3) / 3
print('平均分:', average)
运行后报错 TypeError: unsupported operand type(s) for +: 'int' and 'str'。分析:input() 返回字符串,字符串相加是拼接,但字符串不能与整数 3 相除。修复方法:将三个输入都转换为 float 类型:
score1 = float(input('第一门: '))
score2 = float(input('第二门: '))
score3 = float(input('第三门: '))
average = (score1 + score2 + score3) / 3
print('平均分:', average)
如果用户输入了非数字,会抛出 ValueError。更健壮的写法是使用 try...except 捕获异常,但这是后续章节的内容。这个案例告诉我们:类型转换是输入处理的关键步骤。
总结复盘:构建你的语法基石
本章我们系统学习了Python基础语法的四大支柱:变量与数据类型、数字与字符串操作、输入输出、注释与排错。请记住几个关键点:
- 变量是对象的引用,Python是动态类型语言,但推荐保持类型清晰。
- 字符串是不可变的,所有操作返回新字符串;数字运算注意
/和//的区别。 input()永远返回字符串,需要数字时必须显式转换。- 注释是写给未来的自己看的,好的注释能节省大量调试时间。
- 错误信息是最好的老师,学会阅读Traceback是程序员的基本功。