Python基础语法(一):变量与数据类型、数字与字符串操作、输入输出、注释规范、常见错误排查

欢迎进入Python编程世界的第一道大门。在正式编写任何有意义的程序之前,我们需要先掌握构成代码的基本“积木”:变量如何存储数据、数据有哪些类型、如何与用户交互,以及如何让代码更易读、更健壮。本章将围绕这些核心语法点展开,帮助你建立扎实的语法基础,并学会识别和解决最常见的入门错误。下面这张图展示了本章核心知识点的内在关联,请先建立一个整体认知。

Python 基础语法 变量与数据类型 int / float / str / bool 数字与字符串操作 运算 / 切片 / 方法 输入输出 print() / input() 注释规范与排错 # 注释 / 常见异常 四个模块相互关联,共同构成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() 查看变量的数据类型,这是调试时最常用的工具之一。

经验提醒:Python的变量名区分大小写,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支持两种注释方式:

  1. 单行注释:使用 # 开头,适用于简短说明。
  2. 多行注释:使用三引号 ''' 或 """ 包裹,通常用于函数、类的文档字符串(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是程序员的基本功。