标识符、关键字与常量变量
中等0从起名字到做计算:Python基础语法入门
学编程就像学一门新语言,你要学会怎么给东西起名字、怎么存放数据、怎么让数据做运算、怎么和用户交流。这一篇文章会带你一步步掌握 Python 最基础的知识,让你能写自己的第一个交互式程序。
1. 给程序里的东西起名字:标识符与关键字
想象一下,你有一个玩具箱,里面有很多玩具。为了快速找到想要的玩具,你会给每个玩具贴一个名字标签,比如“红色小汽车”、“蓝色积木”。在 Python 程序里,我们也需要给数据、函数等起名字,这些名字就叫 标识符。
标识符的命名规则(必须遵守,不然程序会报错):
- 只能使用 字母(a–z, A–Z)、数字(0–9)和 下划线(
_)组成。 - 不能以数字开头,比如
1name就是错的。 - 不能和 Python 的“关键字”相同(关键字是 Python 已经用了的特殊词语,比如
if、while、for)。 - 大小写敏感:
Name和name是两个不同的标识符。
关键字就像教室里的“专用桌椅”,你坐不了别人的座位。Python 里大约有 35 个关键字,例如:
False, True, None, and, or, not, if, else, elif, for, while, break, continue, def, return, import, class, try, except, finally, raise, with, as, pass, yield, global, nonlocal, lambda, in, is, del, from, assert, async, await 等。
常见错误:
- 使用关键字做变量名:
if = 5❌ 会报错。 - 使用减号或空格:
my-name❌ 应改为my_name。 - 数字开头:
1st_player❌ 应改为player1。
好的命名习惯:用有意义的英文单词,比如 student_count 表示学生人数,不要用 a、b 那种别人看不懂的名字。如果名字由多个单词组成,常用下划线连接(蛇形命名法),例如 my_score、total_price。
2. 存放数据的容器:常量与变量
程序运行过程中,数据需要被存放在“容器”里。Python 中主要有两种容器:变量和常量。
- 变量:可以随时改变的数据。比如你的年龄每年都会变,所以可以用变量
age来存储。 - 常量:通常不会改变的数据。比如圆周率 π ≈ 3.14159,在程序里我们习惯用全大写字母命名,比如
PI = 3.14159。但 Python 没有强制不让修改,所以这只是一个约定,靠程序员自觉遵守。
变量赋值:用 = 把右边的值放到左边的变量里。
# 变量赋值
my_name = "小明" # 字符串类型
age = 10 # 整数类型
_height = 1.5 # 浮点数类型
is_student = True # 布尔类型
# 常量习惯全大写
PI = 3.14159
GRAVITY = 9.8
print("我的名字是", my_name, ",今年", age, "岁")
注意:Python 的变量是动态类型的,同一个变量可以先存整数,再存字符串,但这样容易混乱,不建议这么做。
3. Python 的四种基本数据类型
就像世界上有不同种类的物品(水果、书籍、衣服),Python 中的数据也分为不同类型。最常用的四种是:整数、浮点数、布尔值、字符串。
3.1 整数(int)
整数就是像 0、1、-5、100 这样没有小数点的数字。在 Python 里,整数可以非常大,比如 9999999999999999999,只要内存够大就能存。
特点:
- 可以表示正数、负数和零。
- 支持所有常见的数学运算。
- Python 3 中,整数除法
/会得到浮点数(带小数),但用//会得到整数(地板除)。
生活例子:比如你有 3 个苹果,妈妈又给了你 5 个,一共多少个?
apples = 3 # 初始苹果数
more_apples = 5 # 妈妈给的苹果
total = apples + more_apples
print("一共有", total, "个苹果") # 输出:一共有 8 个苹果
3.2 浮点数(float)
浮点数是带小数点的数字,比如 3.14、0.5、-2.0。注意:计算机存浮点数会有微小误差(比如 0.1+0.2 可能等于 0.30000000000000004),这是计算机原理决定的,大部分情况没问题。
例子:
pi = 3.14159 # 圆周率
distance = 1.5 # 距离(公里)
print("圆周率约等于", pi)
3.3 布尔型(bool)
布尔型只有两个值:True(真)和 False(假)。就像开关的开和关。布尔值经常用在条件判断中,比如“如果下雨就不出门”。
is_raining = True # 正在下雨
is_sunny = False # 不是晴天
print("今天下雨吗?", is_raining)
3.4 字符串(str)
字符串是用单引号 '...' 或双引号 "..." 包围的文本。比如 "你好"、'Python'。字符串可以拼接(用 +)和重复(用 *)。
name = "小明"
greeting = "你好,"
message = greeting + name # 字符串拼接
print(message) # 输出:你好,小明
# 字符串重复
print("哈" * 3) # 输出:哈哈哈
常见错误:字符串和数字不能直接用 + 拼接。比如 "我今年" + 10 + "岁" 会报错,因为 10 是整数,需要先转成字符串:
age = 10
print("我今年" + str(age) + "岁") # 数字必须转成字符串才能拼接
类型转换常用函数:
int():把字符串或浮点数转成整数(如int("5")→ 5,注意会丢弃小数部分)float():转成浮点数str():转成字符串
4. 让数据做计算:运算符
有了数据,我们还需要操作它们。Python 提供了丰富的运算符,就像数学课上的加减乘除,还有比大小、逻辑判断等。
4.1 算术运算符
| 运算符 | 说明 | 例子 | 结果 |
|---|---|---|---|
+ | 加法 | 7 + 2 | 9 |
- | 减法 | 7 - 2 | 5 |
* | 乘法 | 7 * 2 | 14 |
/ | 除法(结果是浮点数) | 7 / 2 | 3.5 |
// | 地板除(取整数部分) | 7 // 2 | 3 |
% | 取余数 | 7 % 2 | 1 |
** | 乘方(幂) | 2 ** 3 | 8 |
例子:假设考试要算平均分。
math = 90
english = 85
chinese = 88
average = (math + english + chinese) / 3
print("平均分是", average)
4.2 关系运算符(比较运算符)
关系运算比较两个值的大小或是否相等,结果是一个布尔值(True 或 False)。
| 运算符 | 含义 | 例子 | 结果 |
|---|---|---|---|
> | 大于 | 5 > 3 | True |
< | 小于 | 5 < 3 | False |
>= | 大于等于 | 5 >= 5 | True |
<= | 小于等于 | 5 <= 4 | False |
== | 等于(注意是两个等号) | 5 == 3 | False |
!= | 不等于 | 5 != 3 | True |
生活例子:你考试得了95分,小红得了88分,比较一下。
my_score = 95
her_score = 88
print("我比她高吗?", my_score > her_score) # True
print("我们分数相等吗?", my_score == her_score) # False
常见错误:把赋值 = 与比较 == 混淆。比如 if score = 100 会报错,应该写成 if score == 100。
4.3 逻辑运算符
逻辑运算符用来连接多个条件(布尔值),让判断更灵活。Python 有三个逻辑运算符:and(与)、or(或)、not(非)。
and:两边都是 True,结果才是 True。就像“有笔有纸才能写字”。or:只要有一个 True,结果就是 True。就像“有伞或雨衣都能挡雨”。not:取反,True 变 False,False 变 True。就像“不饿就是饱”。
真值表(理解即可):
| A | B | A and B | A or B | not A |
|---|---|---|---|---|
| True | True | True | True | False |
| True | False | False | True | False |
| False | True | False | True | True |
| False | False | False | False | True |
生活例子:
- 如果今天不下雨(
not raining)并且今天是周六(is_weekend == True),就去公园玩。 - 如果分数 ≥ 90 或者作业全对,就可以得到奖励。
temperature = 28
is_weekend = True
# 条件1:温度大于25度 且 是周末 -> 适合去游泳
if temperature > 25 and is_weekend:
print("去游泳吧!")
else:
print("还是在家休息吧")
# 条件2:温度小于10度 或者 是雨天 -> 穿外套
is_rainy = False
if temperature < 10 or is_rainy:
print("多穿点,注意保暖")
else:
print("今天天气不错")
短路求值:Python 计算 and 时,如果左边已经是 False,右边就不会再计算;计算 or 时,如果左边已经是 True,右边就不计算了。这可以提高效率。
4.4 赋值运算符与复合赋值
基本赋值就是用 = 把数据放进变量。但有时候你想让变量本身增加或减少某个数,比如计分器每得一分加1。Python 提供了复合赋值运算符,写得又快又清楚。
| 复合赋值 | 等价于 | 示例 |
|---|---|---|
x += 3 | x = x + 3 | score += 5 |
x -= 2 | x = x - 2 | hp -= 10 |
x *= 4 | x = x * 4 | attack *= 2 |
x /= 2 | x = x / 2 | distance /= 2 |
x //= 3 | x = x // 3 | coins //= 10 |
x %= 10 | x = x % 10 | gold %= 10 |
x **= 2 | x = x ** 2 | level **= 2 |
例子:模拟游戏中的生命值和攻击力变化。
# 模拟生命值
hp = 100 # 初始生命值
print("初始生命值:", hp)
# 受到10点伤害
hp -= 10 # 等价于 hp = hp - 10
print("受伤后生命值:", hp) # 90
# 吃了补血药,回复20点
hp += 20
print("补血后生命值:", hp) # 110
# 购买装备,攻击力翻倍
attack = 5
attack *= 2
print("攻击力翻倍后:", attack) # 10
注意:复合赋值运算符的右边会先计算,然后再与左边做运算。比如 x = 3; x += 2 * 5,先算 2*5=10,再算 x=3+10=13。
4.5 运算优先级
当多个运算符出现在一个表达式里,Python 必须决定先算谁。这就像数学里的“先乘除后加减”。Python 有一套优先级规则,从高到低(只列出常见的):
- 括号
()—— 最高,想先算什么就用括号括起来。 - 乘方
**—— 右结合(比如2**3**2会先算3**2=9,再算2**9=512) - 正负号
+x-x—— 一元运算符 - 乘除取余
*///% - 加减
+- - 关系运算
><>=<===!= - 逻辑非
not - 逻辑与
and - 逻辑或
or - 赋值
=+=等 —— 最低
小窍门:如果你不确定优先级,就加括号!括号最安全,而且别人也能看懂。
代码示例:
# 先乘除后加减
result1 = 2 + 3 * 4 # 3*4=12,再加2得14
print("2+3*4 =", result1)
# 用括号改变顺序
result2 = (2 + 3) * 4 # 先算2+3=5,再乘4得20
print("(2+3)*4 =", result2)
# 乘方优先级高于乘除
result3 = 2 * 3 ** 2 # 先算3**2=9,再乘2得18
print("2*3**2 =", result3)
# 关系运算低于算术
result4 = 3 + 5 > 2 * 3 # 先算术得 8 > 6,结果为True
print("3+5 > 2*3: ", result4) # True
# 逻辑运算低于关系
result5 = not 5 > 3 # 先比较5>3得True,再取非得False
print("not 5 > 3:", result5) # False
# 混合例子
a, b, c = 2, 3, 4
result6 = a + b * c >= 10 and not (c == 4)
# 逐步计算:
# b*c=12, a+12=14,14>=10 -> True
# c==4 -> True, not True -> False
# True and False -> False
print("结果:", result6) # False
5. 与用户对话:输入和输出
程序和人交互靠输入和输出。Python 里用 print() 输出,用 input() 获取输入。
print() 输出:
- 可以输出文字、数字、变量。
- 多个东西用逗号隔开,中间会自动加空格。
- 也可以直接拼接字符串。
- 默认末尾换行,如果不想换行可以加
end=""参数,比如print("正在加载", end="")。
input() 输入:
input()会暂停程序,等待用户输入文字,按回车后把输入的内容作为字符串返回。- 如果想让输入变成数字,需要用
int()或float()转换。
例子:做一个简单的个人信息程序。
# 输出欢迎语
print("欢迎来到Python世界!")
# 获取名字
name = input("请输入你的名字:")
print("你好,", name)
# 获取年龄(注意转成整数)
age_str = input("请输入你的年龄:")
age = int(age_str) # 也可以直接写 int(input("请输入你的年龄:"))
print("你今年", age, "岁")
# 计算明年年龄
next_year_age = age + 1
print("明年你就", next_year_age, "岁啦!")
# 一次性输出多个内容
print("你的名字是", name, ",年龄", age, "岁")
常见错误:忘记转换类型。比如直接 age = input(...) 然后 age + 1,因为 input 返回的是字符串,字符串不能和整数相加,会报错。一定要用 int() 或 float() 转。
更漂亮的输出:Python 3.6 之后可以用 f-string(格式化字符串),在字符串前面加 f,用花括号 {} 嵌入变量,写起来更简洁。
name = "小明"
age = 10
print(f"你好,我叫{name},今年{age}岁。") # 输出:你好,我叫小明,今年10岁。
6. 新手容易犯的错误总结
- 关键字当变量名:比如
if = 5,会报语法错误。 - 标识符数字开头:
1st_place是不允许的。 - 忘记类型转换:
input()得到的是字符串,直接用+和数字运算会出错。 - 混淆
=和==:在if条件中写成if score = 100,应该用==。 - 字符串和数字直接拼接:需要先用
str()转换数字。 - 浮点数精度误差:不要用
==判断两个浮点数是否相等,可以用差值小于某个小值来判断。 - 忘记括号:当表达式优先级不清楚时,多用括号。
7. 完整示例:猜数字小游戏(综合运用)
下面是一个完整的程序,它综合使用了变量、输入输出、类型转换、运算符和条件判断。你可以把它复制到 Python 环境中运行。
import random
# 游戏介绍
print("===== 猜数字游戏 =====")
print("我想了一个 1 到 100 之间的整数,你猜猜看!")
# 电脑随机生成一个 1-100 之间的整数
secret = random.randint(1, 100)
# 记录玩家猜的次数
guess_count = 0
# 游戏循环(这里先展示一次,完整版可用 while 循环)
while True:
# 获取玩家输入
guess_str = input("请输入你的猜测(1-100):")
guess = int(guess_str) # 转成整数
guess_count += 1 # 猜的次数加1
# 比较猜测和秘密数字
if guess == secret:
print(f"恭喜你猜对了!答案是 {secret}")
print(f"你一共猜了 {guess_count} 次。")
break # 猜对就退出循环
elif guess < secret:
print("猜小了,再大一点!")
else:
print("猜大了,再小一点!")
print("游戏结束,下次再来玩!")
运行示例:
===== 猜数字游戏 =====
我想了一个 1 到 100 之间的整数,你猜猜看!
请输入你的猜测(1-100):50
猜小了,再大一点!
请输入你的猜测(1-100):75
猜大了,再小一点!
请输入你的猜测(1-100):62
猜小了,再大一点!
请输入你的猜测(1-100):68
恭喜你猜对了!答案是 68
你一共猜了 4 次。
游戏结束,下次再来玩!
这个例子用到了:
- 变量(
secret,guess,guess_count) - 输入输出(
input、print、f-string) - 整数运算(
guess_count += 1) - 关系运算(
==,<,>) - 逻辑条件(
if...elif...else) - 循环(
while True和break)——虽然还没正式学,但可以感受一下。
8. 相关指引
掌握了本文的内容,你已经可以写很多简单的小程序了。接下来可以学习:
- 条件判断(
if、elif、else)——让程序根据不同情况做不同事情 - 循环(
for、while)——重复执行某段代码 - 列表(list)——存放多个数据
- 函数(
def)——把代码打包成可重复使用的模块
编程就像搭积木,这些基础知识就是最基础的积木块。多动手写代码,遇到不懂的就查文档,你一定能成为编程小能手!
例题精讲
在Python中,下列哪个选项是合法的标识符?
Python中,关键字可以作为变量名使用。
关于Python中的常量和变量,下列说法正确的是?
执行以下代码后,输出结果为:
x = 10
x = x + 5
print(___)
请填写合适的变量名使其输出15。在Python中,True和False是关键字,也是常量。