2026-10-18-python复盘

前言:
记录一下学的 Python 基础语法的复盘。
主要梳理了变量、循环、条件判断、列表等基础知识

1. 输出 print( )

首先得让电脑开口说话,顺便给它个“收纳盒”

1
2
3
name = "战士"       # 把文字装进叫 name 的盒子
HP = 100 # 把数字装进叫 HP 的盒子
print(name, HP) # 让电脑念出来

name 和 HP 就是收纳盒上的标签。那个等号 = 不是数学里的“等于”,而是“装进去”的意思。电脑看到 HP = 100,就会在内存里拿出一个盒子,贴上 HP 的标签,把数字 100 放进去。

print 就是让电脑开口说话。而“变量”就像是贴了标签的收纳盒。你往盒子里装个数字“100”,贴上标签叫 血量,以后你跟电脑说“血量”,它就知道是那个 100。

我自己总结:
表格

学了什么 理解:
print( ) 让电脑把字打在屏幕上
变量 给数据起个名,装进盒子
算术计算 让电脑当计算机,加减乘除它都会

2. 输入 input ( ) 和 int ( )

  • 买奶茶任务
    • 电脑得先问我带了多少钱,这就是 input( ) ,它会停下来等我打字。
    • 但这里有个坑:只要是你用键盘敲进去的,它全当作“文字”处理。文字是没法算加减乘除的,
    • 所以得用 int( )(整数)把文字“翻译”成真正的数字。
1
2
money = input("你有多少钱?")  # 电脑以为你输入的是字符串(文字),它不会算数
money = int(money) # 翻译后,money 变成真数字了

3. //、% 与 f""

算能买几杯奶茶时,用到了三个符号:

  • //( 双斜杠 ):叫整除。10块钱买3块一杯的奶茶,它只留整数3,砍掉小数。
  • %( 百分号 ):叫取余。买完奶茶剩下的1块钱零钱,就是余数。
  • f"" : 你可以把它当成 填空模板 。在字符串前面加个 f ,里面用大括号 {} 挖好坑。电脑运行到这,就会自动把变量里的值填进坑里。
1
print(f"能买{money // 3}杯,还剩{money % 3}块钱")

4. 条件判断与比较运算

这里的核心就是 if( 如果 ),也就是给电脑立规矩。不过有个容易踩的坑,就是 ==。
一个等号( = )是往盒子里装东西( 赋值 ),两个等号( == )才是问电脑这俩一样吗?( 比较 )。

如果第一个条件没中呢?这时候就用 elif( 其实就是 else if 的缩写 ),意思是“如果上面那个不行,再看看我这个”。最后拿个 else 来兜底,意思是“前面都不满足,那就走这条吧”。

还有个很常用的词叫 and。你可以把它当成一个极其严格的裁判,意思是“并且”。它要求两边的条件必须同时成立才行。

像我在下面写的这个猜拳游戏:

1
2
3
4
5
6
if 玩家 == "石头" and 电脑 == "剪刀":
print("玩家赢")
elif 玩家 == 电脑:
print("平局")
else:
print("电脑赢")

电脑在判断的时候,必须同时确认两件事:1. 玩家出的是石头吗? 2. 电脑出的是剪刀吗? 只要这两个条件里有一个没对上( 比如电脑出的是布 ),and 两边就不满足,电脑就不会打印“玩家赢”。

( 这里为了方便看懂,我直接用了中文当变量名,正常写的时候最好用英文比如 player 和 computer )

5. for 循环 / range ( 累加 )

  • 场景:假设你有个金币存钱罐,第1天存1块,第2天存2块……算算连续存几天能有多少金币。
    • for:就是“循环”,让电脑把一件事干很多遍。
    • range ( 1, 6 ):用来规定到底干几遍。代表从 1 开始,到 5 结束,根本不包含6,所以实际上只循环了5次。( 包头不包尾,不包含6 )。
    • 累加:就是找个空盒子( 总数=0 ),每次循环把新金币装进去( 总数 = 总数 + 新金币 )。

来看实操:

1
2
3
4
总数 = 0
for i in range(1, 6): # 相当于跑了5次
总数 = 总数 + i # 每次把 i 塞进总数里
print(总数) # 最后算出来是 15

( 这里说一句:python里的缩进很严格,代码里写的总数 = 总数 + i 前面一定要加4个空格( 或者点 Tab 键 ),这样才能写 print 。不然电脑会直接报错 )

6. 循环 while 和 break

场景:猜数字,不猜对不结束。

  • while:当……的时候。只要条件成立,就一直循环。比如 while 没猜中,它就会一直让你猜。
  • break:强行打断。猜对了,直接用 break 把整个循环停止,结束。

下面是我写的基础逻辑:

1
2
3
4
5
while True:          # 死循环(永远为真)
猜的数 = int(input("猜个数字:"))
if 猜的数 == 666:
print("猜对了!")
break # 结束循环

完整一点:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import random

print("=" * 40)
print("进入猜数字小游戏!猜猜一个1~100内的整数。")
guess_number = random.randint(1, 100)
count = 0

while True:
num = int(input("请输入你猜的数字:"))
count += 1
if num == guess_number:
print(f"猜对了!")
break
elif num < guess_number:
print(f"猜小了!")
else:
print("猜大了!")

( 这里我写的 count = 0 和 count += 1 写了没用到,忘记打印了😀,建议在 print(f"猜对了!“) 后面,或者在循环外面加上一句:print(f"你一共猜了{count}次!”)。

  • 第一句 import random 是干嘛的?
    简单来说就是“呼叫场外外援”。如果没有这个外援,它是不会凭空想出一个随机数的。所以我们得去 Python 的官方武器库里,把 random( 随机 )这个工具箱借过来用。
  • random.randint ( 1, 100 )
    让电脑在 1 到 100 里随便挑个数字藏起来,这就是我们要猜的目标。
  • count = 0 和 count += 1
    我们拿个小本子( count = 0 )。玩家每猜一次,本子上就画一笔( count += 1 ),最后好看看玩家到底猜了几次。
  • 最后 while True + break
    while True 就是一个“无底洞”,意思是:只要没碰到 break,游戏就永远不结束。
    玩家输入数字后,电脑开始做判断:
    • 如果 if num == guess_number:( 一模一样 ),立马喊“猜对了!”,并触发 break 结束无底洞,游戏结束。
    • 如果 elif num < guess_number:( 猜小了 ),提示一下,继续循环。
    • 如果上面都没中,那肯定就是猜大了 else。

跑一遍( 假设电脑想的是50 )

  • 你输入 30,判断发现 30 < 50,电脑提示:“猜小了!”
  • 你输入 80,判断发现不相等也不小于,直接走 else,提示:“猜大了!”
  • 你输入 50,判断 50 == 50,提示:“猜对了!”,遇到 break,循环结束。

7. 列表 / 下标 ( 装一堆数据的箱子 )

场景:战队战绩统计,好几个人得分,总不能给每个人都起一个变量名吧?这时候就需要 列表 了。

  • 列表 [] :之前的变量只能装一个,现在用方括号框起来,能装一排数据。
  • 下标 [] :找箱子里的东西要排号。重点:电脑是从 0 开始数数的,找第一个得喊 [0][-1]可以直接拿最后一个数。

处理列表的三个工具:

  • len( ) :数个数。不用自己一个个数,它直接告诉你箱子里有几样东西。
  • max( ) :找最大。电脑会在箱子里自动比大小,把最大的拿出来。
  • sum( ) :算总账。自动把箱子里所有的数加起来。

比如这行代码:

1
2
3
4
得分 = [80, 95, 100]
print(得分[0]) # 拿第一个,是 80(注意从0开始)
print(max(得分)) # 找到最高分 100
print(len(得分)) # 数一下一共几个人,输出 3

OK 接下来写个成绩录入系统:
第1步:准备好空箱子

1
2
3
total_students = int(input("输入人数:")) # 问老师一共要录入几个人
num = 1 # 计数器:从第1个学生开始
score_list = [] # 准备一个“空箱子”,用来装一会儿录入的成绩

( 注意这里的 input 外面套了 int( ),因为等会儿要用人数做数学比较,得先把文字变成真数字。 )

第2步:只要人数没录满,就一直循环问

1
2
3
4
5
6
7
8
9
while num <= total_students:
# 每次循环,让老师输入成绩
score = input(f"请输入成员 {num} 的成绩:")

# 把成绩塞进箱子里
# 这里用了 int(score),因为 input 拿进来的永远是文字,得翻译成数字再塞进去
score_list.append(int(score))

num += 1 # 录入完一个,人数加1

第3步:录入完成,展示一下箱子里的所有成绩,顺便找最高分

1
2
print(score_list)
print(max(score_list))

第4步:算总分

1
all_score = sum(score_list)

第5步:用 for 循环挨个检查,统计及格人数

1
2
3
4
pass_count = 0          # 及格人数计数器,初始为0
for i in score_list: # 把箱子里的成绩一个个拿出来,起名叫 i
if i >= 60: # 如果成绩大于等于60
pass_count += 1 # 及格人数加1

第6步:报出最终结果

1
2
3
4
5
# +str() 是因为文字和数字不能直接拼,要把数字变成文字。
print("总分是:" + str(all_score))

# 而下面这句 f"" 就省事多了,直接在话里留个空位 {pass_count},数字自动就填进去了。
print(f"成绩大于60分的人数有 {pass_count} 人")
  • append ( ) 怎么理解?
    之前创建列表 得分 = [80, 95, 100] 是直接装好数据。但很多时候,数据是一边敲键盘、电脑一边收的。append( ) 就是“追加”,像往购物车里不断扔东西一样,把新输入的数字塞到列表的尾巴上。
  • 为什么有了 +str ( ) 还要用 f"“?
    看最后两行打印代码。第一个用 +str( ),像强行用胶水把文字和数字粘起来,很麻烦;而 f”“( 填空模板 )就好用多了,直接在话里留个空位,变量自动就填进去了,推荐以后多用 f”"!

8. 双重循环 / 枚举

场景:假设你忘了两位数的密码,但你知道密码的每一位只可能是 1、2、3。怎么找回来?让电脑把所有组合都试一遍( 这就叫暴力枚举 )。

  • 双重循环:就是套娃。外面的大圈跑一次,里面的小圈要跑完一整圈。用来把所有组合都凑出来。

看演示:

1
2
3
for i in range(3):      # 外圈(比如第一位)
for j in range(3): # 内圈(比如第二位)
print(i, j) # 会输出:00, 01, 02, 10, 11, 12, 20, 21, 22

假设密码的第一位和第二位,数字都在 1 到 3 之间:

1
2
3
for i in range(1, 4):      # 外层循环:代表密码的第一位(从1试到3)
for j in range(1, 4): # 内层循环:代表密码的第二位(从1试到3)
print(f"正在尝试密码:{i}{j}")

为什么叫套娃? 因为外面的圈( i )每转 1 次,里面的圈( j )就要老老实实地转完 3 次。等里面转完了,外面才转第 2 次,里面再跟着转 3 次。

我脑补了一下电脑实际上是怎么跑的:

第一轮:外面 i 拿到 1,里面 j 开始跑圈。

  • 里面试了 1,拼出来 11。
  • 里面试了 2,拼出来 12。
  • 里面试了 3,拼出来 13。

第二轮:里面跑完了,外层 i 变成 2,里面 j 清空重来,又开始跑圈。

  • 里面试了 1,拼出来 21。
  • 里面试了 2,拼出来 22。
  • 里面试了 3,拼出来 23。

第三轮:外层 i 变成 3,里面再跑一圈:31, 32, 33。

这跟破解有什么关系?
如果在这个双重循环的最里面加一句判断( 用到之前学的 if )

1
2
3
4
5
6
7
8
9
# 假设真正的密码是 23
for i in range(1, 4):
for j in range(1, 4):
# 把两个数字拼起来变成真正的数字
guess = int(f"{i}{j}")

if guess == 23:
print(f"密码就是 {guess}")
break # 找到了,停止内层循环

( 差不多了,今天脑细胞已阵亡,就到这吧 )