第12天python内容
Day 1:基础语法核心知识(必背版)
📌 今日目标
掌握Python基础语法、数据类型、运算符,能做对模拟题1-6题
第一部分:标识符与变量(必考!)
1. 标识符命名规则【背诵】
# ✅ 正确的标识符
x = 1
_name = "Tom"
student_1 = 90
姓名 = "张三"
myVar = 10# ❌ 错误的标识符
3x = 1 # 不能以数字开头
my-var = 10 # 不能有减号
for = 5 # 不能是关键字
my var = 20 # 不能有空格
【记忆口诀】
- 字母数字下划线,汉字也能做名称
- 数字开头不可以,关键字来要避开
- 大小写要分清楚,见名知义最重要
【模拟题1对应】
# 题目:下列赋值语句中,错误的是
A. x = cos(x) # ✅ 正确
B. y = y**x # ✅ 正确
C. x = int(y) # ✅ 正确
D. 3x = y # ❌ 错误!标识符不能以数字开头# 答案:D
2. 变量赋值【背诵】
# 基本赋值
x = 10
y = 3.14# 链式赋值(多个变量同值)
x = y = z = 1# 序列解包赋值(多个变量不同值)
x, y, z = 1, 2, 3
a, b = 10, 20# 变量值交换
x, y = y, x # 不需要中间变量
【必做练习】
# 练习1:判断下列哪些是合法标识符
_abc # ✅
123abc # ❌
abc_123 # ✅
my-name # ❌
class # ❌(关键字)
Class # ✅# 练习2:写出运行结果
x, y = 10, 20
x, y = y, x
print(x, y) # 输出:20 10
第二部分:字符串操作(高频考点!)
1. 字符串索引【必背】
s = "Python程序设计"# 正向索引(从0开始)
# P y t h o n 程 序 设 计
# 0 1 2 3 4 5 6 7 8 9# 反向索引(从-1开始)
# -10 -9 -8 -7 -6 -5 -4 -3 -2 -1print(s[0]) # 'P'
print(s[6]) # '程'
print(s[-1]) # '计'
print(s[-4]) # '程'
2. 字符串切片【核心考点】
s = "Python程序设计"# 格式:s[start:end:step]
# 左闭右开:包含start,不包含ends[:4] # 'Pyth' (从开头到索引3)
s[2:6] # 'thon' (从索引2到5)
s[6:] # '程序设计'(从索引6到末尾)
s[:] # 'Python程序设计'(全部)
s[::-1] # '计设序程nohtyP'(倒序)
s[::2] # 'Pto程设'(步长2)
【模拟题3对应】
s = "Python程序设计"
s[:4] # 结果是什么?# 答案:'Pyth'(C选项)
# 解析:[:4]表示从开头(索引0)到索引3,共4个字符
【必做练习】
s = "Welcome"# 练习1:写出结果
print(s[1:4]) # 'elc'
print(s[:3]) # 'Wel'
print(s[4:]) # 'ome'
print(s[-3:]) # 'ome'
print(s[::-1]) # 'emocleW'# 练习2:提取星期几
S = "星期一星期二星期三星期四星期五星期六星期日"
n = int(input("请输入数字1-7: "))
start = (n-1) * 3
weekDay = S[start:start+3]
print(weekDay)
3. 字符串方法【必背】
s = "abc defg bc"# 大小写转换
s.upper() # 'ABC DEFG BC'
s.lower() # 'abc defg bc'# 查找
s.index('bc') # 1(第一次出现的位置)
'bc' in s # True
'xyz' in s # False# 替换(不改变原字符串)
s.replace('bc', '123') # 'a123 defg 123'# 分割
s.split(' ') # ['abc', 'defg', 'bc']# 判断
'123'.isdigit() # True(全是数字)
'abc'.isalpha() # True(全是字母)
'abc123'.isalnum() # True(字母或数字)
【模拟题6对应】
# 判断变量c(字符串型)的内容是数字字符# 方法1:
'0' <= c <= '9' # ✅ 正确# 方法2:
c.isdigit() # ✅ 正确# 错误方法:
0 <= c <= 9 # ❌ 字符不能和数字比较
c >= 0 and c <= 9 # ❌ 字符不能和数字比较# 答案:D('0' <= c <= '9')
第三部分:数据类型【必背】
1. 基本数据类型
# 整数 int
x = 123
y = 0b1010 # 二进制:10
z = 0o26 # 八进制:22
w = 0X1E2 # 十六进制:482# 浮点数 float
a = 1.23
b = 3.6e-5 # 科学计数法:0.000036
c = 4.8E2 # 480.0# 字符串 str
s1 = 'hello'
s2 = "world"
s3 = '''多行
字符串'''# 布尔值 bool
flag1 = True
flag2 = False
2. 类型转换【必背】
# 转整数
int(1.5) # 1(向下取整)
int('123') # 123
int(True) # 1
int(False) # 0# 转浮点数
float(2) # 2.0
float('12.3') # 12.3# 转字符串
str(3) # '3'
str(True) # 'True'# 转布尔值
bool(0) # False
bool(1) # True
bool('') # False(空字符串)
bool('0') # True(非空字符串)# eval函数(计算字符串表达式)
eval('3+4') # 7
eval('True') # True
eval('[1,2,3]') # [1, 2, 3]
【必做练习】
# 练习1:写出结果
print(int(1.9)) # 1
print(float('3')) # 3.0
print(str(100)) # '100'
print(bool('')) # False
print(bool('0')) # True# 练习2:输入多个值
a, b, c = eval(input("输入a,b,c: "))
# 输入:1, 2, 3
# a=1, b=2, c=3
第四部分:运算符【必背】
1. 算术运算符
# 基本运算
10 + 3 # 13(加)
10 - 3 # 7 (减)
10 * 3 # 30(乘)
10 / 3 # 3.333...(除,结果是浮点数)# 重点运算符
10 // 3 # 3 (整除,向下取整)
10 % 3 # 1 (取余)
2 ** 3 # 8 (幂运算,2³)# 负数的整除和取余
23 // -5 # -5
23 % -5 # -2
-23 // 5 # -5
-23 % 5 # 2
【优先级】(从高到低)
**(幂)*///%(乘除)+-(加减)
【必做练习】
# 练习1:计算结果
print(10 / 3) # 3.3333...
print(10 // 3) # 3
print(10 % 3) # 1
print(2 ** 3) # 8# 练习2:三位数逆序输出
n = 345
a = n % 10 # 个位:5
b = n // 10 % 10 # 十位:4
c = n // 100 # 百位:3
result = a*100 + b*10 + c
print(result) # 543# 练习3:求商和余数
divmod(23, -5) # (-5, -2)
2. 关系运算符
# 比较运算符
5 > 3 # True
5 < 3 # False
5 == 5 # True(相等)
5 != 3 # True(不等于)
5 >= 5 # True
5 <= 4 # False# 字符串比较(按ASCII码)
'a' > 'A' # True(小写>大写)
'abc' > 'aBc' # True
'123' < '98' # True(字符'1' < 字符'9')
3. 逻辑运算符
# and(与)- 全真才真
True and True # True
True and False # False# or(或)- 一真即真
True or False # True
False or False # False# not(非)- 取反
not True # False
not False # True# 组合使用
x = 15
x > 10 and x < 20 # True
1 < x < 20 # True(Python特有,等价于上面)
【必做练习】
# 练习1:判断三角形
a, b, c = 3, 4, 5
if a+b > c and b+c > a and a+c > b:print("能构成三角形")# 练习2:判断偶数
x = 10
if x % 2 == 0:print("偶数")# 练习3:判断数字字符
c = '5'
if '0' <= c <= '9':print("是数字字符")
第五部分:输入输出【必背】
1. 输入
# input()返回字符串
x = input("请输入: ") # 输入:123
print(type(x)) # <class 'str'># 转换类型
x = int(input("请输入整数: "))
x = float(input("请输入小数: "))# eval()输入多个值
a, b = eval(input("输入a,b: "))
# 输入:10, 20
# a=10, b=20
2. 输出
# 基本输出
print("Hello")
print(1, 2, 3) # 1 2 3(默认空格分隔)
print(1, 2, 3, sep=',') # 1,2,3
print("A", end='') # 不换行
print("B") # AB# 格式化输出方法1:%
x = 123
y = 3.14159
print("x=%d, y=%.2f" % (x, y)) # x=123, y=3.14# 格式化输出方法2:format()
print("x={}, y={:.2f}".format(x, y)) # x=123, y=3.14
【必做练习】
# 练习1:输入三角形三边
a, b, c = eval(input("输入a,b,c: "))# 练习2:格式化输出
x = 123
print("%5d" % x) # 123(占5位,右对齐)
print("%-5d" % x) # 123 (占5位,左对齐)
print("%.2f" % 3.14159) # 3.14(保留2位小数)
📝 Day 1 课后作业
作业1:基础题(必做)
# 1. 判断下列标识符是否合法
_var # ?
123abc # ?
my_var # ?
for # ?# 2. 写出运行结果
s = "Hello World"
print(s[0]) # ?
print(s[:5]) # ?
print(s[-5:]) # ?
print(s[::-1]) # ?# 3. 计算结果
print(17 // 5) # ?
print(17 % 5) # ?
print(2 ** 3) # ?# 4. 类型转换
print(int('123')) # ?
print(float(5)) # ?
print(str(True)) # ?
print(bool('')) # ?
作业2:编程题(必做)
# 题目1:输入三个整数,从大到小输出
a, b, c = eval(input("输入三个整数: "))
# 请完成代码# 题目2:判断字符类型
ch = input("输入一个字符: ")
# 判断是字母、数字还是其他字符# 题目3:温度转换
# 输入摄氏温度,输出华氏温度
# 公式:F = 9/5 * C + 32
⚠️ Day 1 易错点总结
- 标识符:
3x不合法(数字开头) - 字符串切片:
s[:4]是前4个字符,不包括索引4 - 整除:
10//3=3,不是3.333 - 字符比较:
'0' <= c <= '9'是字符比较,不是数字 - 布尔值:
bool('')是False,bool('0')是True - input():返回的是字符串,需要转换
Day 2:控制结构核心知识(必背版)
📌 今日目标
掌握选择结构、循环结构,能做对模拟题7-12题
第一部分:选择结构【必考!】
1. 单分支if语句
# 格式
if 条件:语句块 # 注意缩进4个空格# 示例
score = 85
if score >= 60:print("及格")
2. 双分支if-else语句【高频】
# 格式
if 条件:语句块1
else:语句块2# 示例:判断奇偶
x = 10
if x % 2 == 0:print("偶数")
else:print("奇数")# 示例:三角形面积
import math
a, b, c = 3, 4, 5
if a+b > c and b+c > a and a+c > b:p = (a+b+c) / 2area = math.sqrt(p*(p-a)*(p-b)*(p-c))print("三角形面积=", area)
else:print("不能构成三角形")
3. 多分支if-elif-else语句【必背】
# 格式
if 条件1:语句块1
elif 条件2:语句块2
elif 条件3:语句块3
else:语句块n# 示例:成绩等级
score = int(input("输入成绩: "))
if score >= 90:grade = "优"
elif score >= 80:grade = "良"
elif score >= 70:grade = "中"
elif score >= 60:grade = "及格"
else:grade = "不及格"
print(grade)
【重要!】多分支的执行顺序
# 正确写法(从高到低)
if score >= 90:grade = "优"
elif score >= 80: # 已经<90grade = "良"# 错误写法(从低到高)
if score >= 60:grade = "及格" # 90分也会进这里!
elif score >= 70:grade = "中" # 永远执行不到
【必做练习】
# 练习1:判断三角形类型
a, b, c = eval(input("输入a,b,c: "))
if not (a+b > c and b+c > a and a+c > b):print("不能构成三角形")
elif a == b and b == c:print("等边三角形")
elif a == b or b == c or a == c:print("等腰三角形")
else:print("其他三角形")# 练习2:判断字符类型
ch = input("输入一个字符: ")
if ch.isalpha():print("字母")
elif ch.isdigit():print("数字")
else:print("其他字符")
第二部分:for循环【核心考点!】
1. 基本格式
# 格式
for 循环变量 in 序列:语句块# range()函数
range(n) # 0 到 n-1
range(m, n) # m 到 n-1
range(m, n, step) # m 到 n-1,步长step
2. range()详解【必背】
# 示例
list(range(10)) # [0,1,2,3,4,5,6,7,8,9]
list(range(1, 10)) # [1,2,3,4,5,6,7,8,9]
list(range(1, 10, 2)) # [1,3,5,7,9]
list(range(10, 1, -1)) # [10,9,8,7,6,5,4,3,2]# 循环10次
for i in range(10):print(i) # 0到9# 循环1到100
for i in range(1, 101):print(i)# 倒序循环
for i in range(10, 0, -1):print(i) # 10到1
3. 遍历序列【必背】
# 遍历字符串
for c in "hello":print(c) # h e l l o# 遍历列表
for i in [1, 2, 3, 4]:print(i)# 遍历时需要索引
s = "Python"
for i in range(len(s)):print(i, s[i])
# 0 P
# 1 y
# 2 t
# ...
4. 循环控制【重要】
# break:跳出整个循环
for i in range(10):if i == 5:breakprint(i) # 0 1 2 3 4# continue:跳过本次循环
for i in range(10):if i % 2 == 0:continueprint(i) # 1 3 5 7 9
【模拟题7对应】
numbers = [1, 2, 3, 4]# 错误写法
list(map(lambda x:x**2, *numbers)) # ❌ 不需要*# 正确写法
list(map(lambda x:x**2, numbers)) # ✅ [1,4,9,16]# 答案:B
【必做练习】
# 练习1:求1-100的和
s = 0
for i in range(1, 101):s += i
print(s) # 5050# 练习2:求1-100的奇数和
s = 0
for i in range(1, 101, 2):s += i
print(s)# 练习3:九九乘法表(下三角)
for i in range(1, 10):for j in range(1, i+1):print(f"{i}*{j}={i*j}", end="\t")print()# 练习4:字符串中数字字符判断
s = input("输入字符串: ")
is_num = True
for c in s:if not c.isdigit():is_num = Falsebreak
if is_num:print("全是数字")
else:print("含非数字")
第三部分:while循环【必背】
1. 基本格式
# 格式
while 条件:语句块# 示例:求1-100的和
s = 0
i = 1
while i <= 100:s += ii += 1
print(s)
2. 死循环【注意】
# 死循环示例(永远不会结束)
while True:print("死循环")# 正确用法:配合break
while True:x = int(input("输入(-1结束): "))if x == -1:breakprint(x)
3. for vs while
# for循环:次数已知
for i in range(10):print(i)# while循环:次数未知
x = int(input("输入: "))
while x >= 0:print(x)x = int(input("输入: "))
【必做练习】
# 练习1:辗转相除法求最大公约数
m, n = 12, 18
if m < n:m, n = n, m
while m % n != 0:m, n = n, m % n
print("最大公约数:", n)# 练习2:统计输入数据
count = 0
total = 0
while True:x = int(input("输入(-1结束): "))if x == -1:breakcount += 1total += x
print(f"共{count}个数,和为{total}")
第四部分:列表推导式【高频考点!】
1. 基本格式【必背】
# 格式1:单分支
[表达式 for 变量 in 序列 if 条件]# 格式2:双分支
[表达式1 if 条件 else 表达式2 for 变量 in 序列]
2. 单分支列表推导式
# 示例1:生成平方数
[x**2 for x in range(10)]
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]# 示例2:筛选偶数
[x for x in range(10) if x%2 == 0]
# [0, 2, 4, 6, 8]# 示例3:能被5整除的数的立方
[x**3 for x in range(1, 16) if x%5 == 0]
# [125, 1000](5³和10³)
【模拟题9对应】
# 题目:1到15之间所有能被5整除的数的立方# 正确答案
[x**3 for x in range(1, 16) if x%5 == 0]# 错误选项分析
[x**3 for x in range(5, 16) if x%5 != 0] # 起点错,条件反
[x**2 for x in range(1, 16) if x%5 == 0] # 平方不是立方
[x**3 for x in range(1, 16) if x%5 != 0] # 条件反了# 答案:A
3. 双分支列表推导式
# 偶数求平方,奇数乘10
[x**2 if x%2==0 else x*10 for x in range(10)]
# [0, 10, 4, 30, 16, 50, 36, 70, 64, 90]# 大于5的保留,否则变0
[x if x>5 else 0 for x in range(10)]
# [0, 0, 0, 0, 0, 0, 6, 7, 8, 9]
【必做练习】
# 练习1:1-100的偶数
[x for x in range(1, 101) if x%2 == 0]# 练习2:1-100能被3和7整除的数
[x for x in range(100) if x%3==0 and x%7==0]# 练习3:字符串转大写
s = "hello"
[c.upper() for c in s] # ['H','E','L','L','O']# 练习4:提取列表中的偶数
nums = [1, 2, 3, 4, 5, 6]
[x for x in nums if x%2 == 0] # [2, 4, 6]
第五部分:lambda函数【必考!】
1. 基本格式【必背】
# 格式
lambda 参数: 表达式# 示例
f = lambda x: x**2
print(f(5)) # 25# 两个参数
add = lambda x, y: x + y
print(add(3, 4)) # 7
2. lambda配合map()【高频】
# map(函数, 序列)# 示例1:求平方
numbers = [1, 2, 3, 4]
result = list(map(lambda x: x**2, numbers))
print(result) # [1, 4, 9, 16]# 示例2:字符串转整数
s = ['1', '2', '3']
result = list(map(int, s))
print(result) # [1, 2, 3]
【模拟题10对应】
# 题目:判断一个整数是否为偶数# 正确答案
lambda x: x % 2 == 0# 错误选项分析
lambda x: if x%2==0: True else: False # ❌ 不能有if语句
lambda x: return x%2==0 # ❌ 不能有return
lambda x: x%2=0 # ❌ 是==不是=# 答案:D
3. lambda配合filter()
# filter(函数, 序列) - 筛选# 示例:筛选偶数
numbers = [1, 2, 3, 4, 5, 6]
result = list(filter(lambda x: x%2==0, numbers))
print(result) # [2, 4, 6]# 示例:筛选正数
numbers = [-2, -1, 0, 1, 2]
result = list(filter(lambda x: x>0, numbers))
print(result) # [1, 2]
【必做练习】
# 练习1:求立方
cube = lambda x: x**3
print(cube(3)) # 27# 练习2:判断奇数
is_odd = lambda x: x%2 == 1
print(is_odd(5)) # True# 练习3:两数之和
add = lambda x, y: x + y
print(add(10, 20)) # 30# 练习4:列表所有元素+10
nums = [1, 2, 3, 4, 5]
result = list(map(lambda x: x+10, nums))
print(result) # [11, 12, 13, 14, 15]# 练习5:筛选大于5的数
nums = [1, 3, 5, 7, 9, 11]
result = list(filter(lambda x: x>5, nums))
print(result) # [7, 9, 11]
第六部分:全局变量与局部变量【必考!】
1. 作用域【必背】
# 全局变量:函数外定义
x = 10def func():# 局部变量:函数内定义y = 20print(x) # 可以访问全局变量print(y)func()
print(x) # 10
print(y) # ❌ 错误!y是局部变量
2. global关键字【重要】
# 不使用global
a = 5
def test():a = 10 # 这是局部变量a,不是全局aprint(a)
test() # 10
print(a) # 5(全局a没变)# 使用global
a = 5
def test():global a # 声明使用全局变量a = 10 # 修改全局变量print(a)
test() # 10
print(a) # 10(全局a被修改)
【模拟题8对应】
a = 5
b = 6
def test():global aa = 10b = 20 # 局部变量b
test()
print(a, b)# 答案:10 6
# 解析:
# - a声明了global,所以a=10修改的是全局a
# - b没声明global,所以b=20是局部变量,不影响全局b
【必做练习】
# 练习1:不使用global
x = 100
def func():x = 200print(x)
func() # 输出?200
print(x) # 输出?100# 练习2:使用global
x = 100
def func():global xx = 200print(x)
func() # 输出?200
print(x) # 输出?200# 练习3:只读取全局变量
sum1 = 1
def func():print(sum1) # 只读取,不需要global
func()
print(sum1)
📝 Day 2 课后作业
作业1:选择结构(必做)
# 1. 判断年份是否为闰年
# 闰年条件:能被4整除但不能被100整除,或能被400整除
year = int(input("输入年份: "))
# 请完成代码# 2. 根据月份输出季节
# 3-5春季,6-8夏季,9-11秋季,12-2冬季
month = int(input("输入月份: "))
# 请完成代码# 3. 判断三角形类型(等边、等腰、其他)
a, b, c = eval(input("输入三边: "))
# 请完成代码
作业2:循环结构(必做)
# 1. 求100以内所有偶数的和# 2. 求1-100中能被3整除但不能被5整除的数的个数# 3. 判断一个数是否为素数
n = int(input("输入一个数: "))
# 请完成代码# 4. 输出水仙花数(100-999)
# 水仙花数:各位数字立方和等于该数本身
# 如153 = 1³ + 5³ + 3³
作业3:列表推导式(必做)
# 1. 生成1-50中所有奇数的平方# 2. 提取字符串中的所有数字字符
s = "abc123def456"
# 结果:['1','2','3','4','5','6']# 3. 将列表中的偶数变为平方,奇数保持不变
nums = [1, 2, 3, 4, 5, 6]
# 结果:[1, 4, 3, 16, 5, 36]
作业4:综合题(必做)
# 1. 输入一组成绩(-1结束),计算平均分和及格率
scores = []
while True:score = int(input("输入成绩(-1结束): "))if score == -1:breakscores.append(score)
# 请完成后续代码# 2. 打印菱形图案
# *
# ***
# *****
# *******
# *****
# ***
# *
⚠️ Day 2 易错点总结
- 多分支顺序:必须从高到低或从低到高,不能跳跃
- range():
range(10)是0-9,不包括10 - break vs continue:break跳出循环,continue跳过本次
- 列表推导式:单分支if在后面,双分支if在前面
- lambda:不能有if语句,不能有return,只能有表达式
- global:要修改全局变量必须声明,只读取不需要
🎯 Day 1-2 重点知识清单
必背公式
# 温度转换
F = 9/5 * C + 32# 三角形面积(海伦公式)
p = (a+b+c) / 2
S = sqrt(p*(p-a)*(p-b)*(p-c))# 整除和取余
商 = a // b
余数 = a % b
必背代码
# 1. 三位数逆序
n = 345
a = n % 10
b = n // 10 % 10
c = n // 100
result = a*100 + b*10 + c# 2. 判断字符是否为数字
'0' <= c <= '9' 或 c.isdigit()# 3. 输入多个值
a, b, c = eval(input("输入: "))# 4. 列表推导式筛选
[x for x in range(100) if 条件]# 5. lambda求平方
lambda x: x**2
明天继续Day 3-4的内容!加油!💪
