惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Simon Willison's Weblog
Simon Willison's Weblog
P
Privacy International News Feed
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Troy Hunt's Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Attack and Defense Labs
Attack and Defense Labs
S
Secure Thoughts
V2EX - 技术
V2EX - 技术
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
O
OpenAI News
Cloudbric
Cloudbric
Google Online Security Blog
Google Online Security Blog
Schneier on Security
Schneier on Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Help Net Security
Help Net Security
Cyberwarzone
Cyberwarzone
G
GRAHAM CLULEY
L
Lohrmann on Cybersecurity
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Spread Privacy
Spread Privacy
NISL@THU
NISL@THU
N
News and Events Feed by Topic
T
Tenable Blog
S
Security @ Cisco Blogs
N
News and Events Feed by Topic
The Hacker News
The Hacker News
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google DeepMind News
Google DeepMind News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
V
Visual Studio Blog
P
Proofpoint News Feed
Webroot Blog
Webroot Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 三生石上(FineUI控件)
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Jina AI
Jina AI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
L
LangChain Blog
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东

开心兔

父亲节2 - 开心兔 期末复习 - 开心兔 移植十周年 博客十周年 - 开心兔 哪本经最难念? - 开心兔 口袋 - 开心兔 《秋月思》中秋后在校望月小思 - 开心兔 Cloudflare SaaS两域名实现优选 - 开心兔 奇葩室友2.1 - 开心兔 奇葩室友1 - 开心兔 各怀鬼胎的生活 - 开心兔 推广 - 开心兔 集体生活挺不容易的 - 开心兔
第 01 讲:变量、输入输出、类型转换与表达式 - 开心兔
博主: 开心兔 · 2026-06-24 · via 开心兔

第 01 讲:变量、输入输出、类型转换与表达式

适合状态:看过 Python 视频,但基础不牢、容易忘、打代码速度偏慢。
本讲目标:先把“能写小程序”的地基打稳。二级 Python 很多编程题,本质都离不开输入、类型转换、表达式计算和格式化输出。

一、你要会什么

学完这一讲,你要能做到:

  1. 看懂变量赋值语句。
  2. 会用 input() 获取键盘输入。
  3. 知道 input() 得到的一定是字符串。
  4. 会用 int()float()str() 做类型转换。
  5. 会写常见数学表达式。
  6. 会用 print() 输出结果。
  7. 会用 round()format() 或 f-string 控制小数位。

这一讲看起来基础,但考试里非常常见。很多同学编程题丢分,不是不会思路,而是输在:

  • 忘了把输入转成数字。
  • 除法、整除、取余混淆。
  • 输出格式不符合题目要求。
  • 变量名写错。
  • 表达式优先级想当然。

二、通俗讲解

1. 变量是什么

变量可以理解成一个“贴了名字的盒子”。

age = 18
name = "Tom"
score = 95.5

含义是:

  • age 这个盒子里放了整数 18
  • name 这个盒子里放了字符串 "Tom"
  • score 这个盒子里放了小数 95.5

注意:Python 里的 = 不是数学里的“相等”,而是“赋值”。

x = 10
x = x + 1
print(x)

输出:

11

解释:先取出原来的 x,也就是 10,加 1 后再放回 x


2. 变量名怎么写

变量名可以由字母、数字、下划线组成,但不能以数字开头。

合法:

score
score1
student_name
_count

不合法:

2score
student-name
class

其中 class 是 Python 关键字,不能当变量名。

二级考试里常考判断变量名是否合法,记住三条:

  1. 不能数字开头。
  2. 不能包含空格、减号等特殊符号。
  3. 不能使用 Python 关键字。

3. input() 的关键陷阱

input() 用来获取用户输入。

name = input("请输入姓名:")
print(name)

最重要的一点:

input() 得到的一定是字符串

例如:

a = input()
b = input()
print(a + b)

如果输入:

10
20

输出不是 30,而是:

1020

因为此时 a 是字符串 "10"b 是字符串 "20",字符串相加表示拼接。

如果想做数学加法,要写:

a = int(input())
b = int(input())
print(a + b)

输出:

30

4. 常见数据类型

二级 Python 前期最常用的是这几类:

类型说明示例
int整数10, -3, 0
float小数3.14, 0.5
str字符串"abc", 'Python'
bool布尔值True, False

可以用 type() 查看类型:

x = 10
print(type(x))

输出:

<class 'int'>

考试选择题可能会问:

print(type("123"))

答案是:

<class 'str'>

因为 "123" 加了引号,是字符串,不是整数。


5. 类型转换

常用转换函数:

int("123")      # 转成整数 123
float("3.14")  # 转成小数 3.14
str(123)       # 转成字符串 "123"

常见写法:

n = int(input())
price = float(input())

注意:

int("3.14")

会报错,因为 "3.14" 不是整数形式的字符串。

可以这样:

x = int(float("3.14"))
print(x)

输出:

3

int() 对小数取整时不是四舍五入,而是直接去掉小数部分。


三、表达式与运算符

1. 常见算术运算符

运算符含义示例结果
+加法3 + 25
-减法3 - 21
*乘法3 * 26
/普通除法5 / 22.5
//整除5 // 22
%取余5 % 21
**幂运算2 ** 38

特别重要:

print(5 / 2)   # 2.5
print(5 // 2)  # 2
print(5 % 2)   # 1

一句话记忆:

  • /:正常除,结果通常是小数。
  • //:只要商的整数部分。
  • %:只要余数。

2. 整除和取余的考试用途

整除和取余很常用。

判断一个数是否能被 2 整除:

n = int(input())
print(n % 2 == 0)

取一个三位数的个位、十位、百位:

n = 357
ge = n % 10
shi = n // 10 % 10
bai = n // 100
print(bai, shi, ge)

输出:

3 5 7

这个知识点后面会在循环题、数字处理题里反复出现。


3. 运算优先级

常见优先级从高到低:

  1. () 括号
  2. ** 幂运算
  3. *///%
  4. +-

建议你考试时不要赌优先级,拿不准就加括号。

result = (a + b) * c

比:

result = a + b * c

更清楚。


四、输出格式

1. print() 基础

name = "Python"
score = 90
print(name, score)

输出:

Python 90

print() 输出多个内容时,默认用空格隔开。


2. f-string 格式化输出

推荐你优先掌握 f-string,简单、好读、考试也常用。

name = "Tom"
score = 95
print(f"{name}的成绩是{score}")

输出:

Tom的成绩是95

保留两位小数:

x = 3.14159
print(f"{x:.2f}")

输出:

3.14

保留一位小数:

x = 3.14159
print(f"{x:.1f}")

输出:

3.1

3. round() 和格式化的区别

x = 3.1
print(round(x, 2))
print(f"{x:.2f}")

输出:

3.1
3.10

区别:

  • round(x, 2) 是数值处理,不一定补 0。
  • f"{x:.2f}" 是输出格式,会固定显示两位小数。

考试如果要求“保留两位小数输出”,更推荐:

print(f"{result:.2f}")

五、考试常见问法

问法 1:判断程序输出

a = input()
b = input()
print(a + b)

输入:

3
4

输出是什么?

答案:

34

原因:input() 返回字符串。


问法 2:根据题意写表达式

题目:输入圆的半径 r,输出圆面积,圆周率取 3.14

核心表达式:

area = 3.14 * r ** 2

不是:

area = 3.14 * r * 2

后者是周长相关表达式,不是面积。


问法 3:输出格式

题目:计算平均分,结果保留 1 位小数。

正确写法:

avg = total / 3
print(f"{avg:.1f}")

六、手把手例题

例题 1:两个整数求和

题目:输入两个整数,输出它们的和。

输入样例:

10
20

输出样例:

30

分析:

  1. 输入两个数。
  2. input() 得到字符串,所以要用 int()
  3. 相加后输出。

代码:

a = int(input())
b = int(input())
print(a + b)

例题 2:计算长方形面积

题目:输入长方形的长和宽,输出面积。

输入样例:

5
3

输出样例:

15

代码:

length = int(input())
width = int(input())
area = length * width
print(area)

例题 3:计算平均分,保留两位小数

题目:输入三门课成绩,输出平均分,保留两位小数。

输入样例:

80
90
85

输出样例:

85.00

代码:

a = float(input())
b = float(input())
c = float(input())
avg = (a + b + c) / 3
print(f"{avg:.2f}")

为什么用 float()

因为成绩可能出现小数,例如 89.5


例题 4:拆分三位数

题目:输入一个三位整数,输出它的百位、十位、个位数字。

输入样例:

357

输出样例:

3 5 7

代码:

n = int(input())
bai = n // 100
shi = n // 10 % 10
ge = n % 10
print(bai, shi, ge)

这类题是二级里很值得练的基础题,因为它会训练你对 //% 的感觉。


七、选择题训练:对写代码有帮助的题

先做题,再看答案。别急着翻,给大脑一点“拉伸感”。

选择题 1

下列变量名合法的是:

A. 2score
B. student-name
C. student_name
D. class


答案与解析

答案:C

解析:变量名不能以数字开头,不能包含减号,不能使用关键字。student_name 合法。


选择题 2

执行下面程序:

a = input()
b = input()
print(a + b)

输入:

12
3

输出结果是:

A. 15
B. 123
C. 12 3
D. 报错


答案与解析

答案:B

解析:input() 返回字符串,字符串相加表示拼接,所以输出 123


选择题 3

表达式 17 // 5 的结果是:

A. 2
B. 3
C. 3.4
D. 4


答案与解析

答案:B

解析:// 是整除,17 / 5 = 3.4,整除结果是 3


选择题 4

表达式 17 % 5 的结果是:

A. 2
B. 3
C. 3.4
D. 5


答案与解析

答案:A

解析:17 = 5 * 3 + 2,余数是 2


选择题 5

下面程序的输出是:

x = 2
y = 3
print(x ** y + 1)

A. 7
B. 8
C. 9
D. 10


答案与解析

答案:C

解析:2 ** 3 = 8,再加 1,结果是 9


选择题 6

执行下面程序:

x = 3.1
print(f"{x:.2f}")

输出结果是:

A. 3.1
B. 3.10
C. 3.100
D. 3


答案与解析

答案:B

解析::.2f 表示固定保留两位小数,不足两位会补 0


八、仿真练习题

这些题偏基础,但都贴近考试编程题的底层能力。请你尽量自己打代码,不要复制。

练习 1:摄氏温度转华氏温度

题目:输入摄氏温度 c,计算并输出华氏温度 f。公式:

f = c * 9 / 5 + 32

要求:结果保留 1 位小数。

输入样例:

30

输出样例:

86.0

参考答案
c = float(input())
f = c * 9 / 5 + 32
print(f"{f:.1f}")

练习 2:计算圆面积和周长

题目:输入圆的半径 r,圆周率取 3.14,输出圆面积和周长,均保留 2 位小数。

公式:

area = 3.14 * r * r
length = 2 * 3.14 * r

输入样例:

2

输出样例:

12.56
12.56

参考答案
r = float(input())
area = 3.14 * r * r
length = 2 * 3.14 * r
print(f"{area:.2f}")
print(f"{length:.2f}")

练习 3:交换两个变量

题目:输入两个整数 ab,交换它们的值后输出。

输入样例:

10
20

输出样例:

20 10

参考答案
a = int(input())
b = int(input())
a, b = b, a
print(a, b)

练习 4:秒数转换

题目:输入一个整数秒数 s,将它转换成“小时 分钟 秒”的形式输出。

输入样例:

3661

输出样例:

1 1 1

解释:3661 秒等于 1 小时 1 分钟 1 秒。

提示:

  • 1 小时 = 3600 秒
  • 1 分钟 = 60 秒
  • // 求整份数量
  • % 求剩余部分

参考答案
s = int(input())
hour = s // 3600
minute = s % 3600 // 60
second = s % 60
print(hour, minute, second)

练习 5:三位数逆序

题目:输入一个三位整数,输出它的逆序数。

输入样例:

357

输出样例:

753

提示:

个位 * 100 + 十位 * 10 + 百位

参考答案
n = int(input())
bai = n // 100
shi = n // 10 % 10
ge = n % 10
result = ge * 100 + shi * 10 + bai
print(result)

练习 6:购物金额计算

题目:输入商品单价 price 和购买数量 count,输出总价,保留 2 位小数。

输入样例:

12.5
3

输出样例:

37.50

参考答案
price = float(input())
count = int(input())
total = price * count
print(f"{total:.2f}")

九、提交给我的练习任务

下面 3 道题请你先不要看答案,自己写完后发给我。我会按二级考试的思路帮你批改:看语法、看逻辑、看格式、看是否有更稳的写法。

提交题 1:总分和平均分

输入三门课程成绩,输出总分和平均分。平均分保留 1 位小数。

输入样例:

80
90
85

输出样例:

255
85.0

要求:

  • 三门成绩可以按整数处理。
  • 总分直接输出整数。
  • 平均分固定保留 1 位小数。

提交题 2:四位数各位数字之和

输入一个四位整数,输出它各位数字之和。

输入样例:

2026

输出样例:

10

提示:分别取千位、百位、十位、个位。


提交题 3:人民币换算

输入一个整数金额 money,表示人民币元数。请尽量使用 100 元、50 元、10 元纸币进行兑换,输出每种纸币的张数。

输入样例:

280

输出样例:

2 1 3

解释:

  • 2 张 100 元
  • 1 张 50 元
  • 3 张 10 元

提示:

  • 先算 100 元张数。
  • 再处理剩余金额。
  • 再算 50 元张数。
  • 最后算 10 元张数。

十、易错点总结

  1. input() 得到的是字符串,不是数字。
  2. 字符串 "10" + "20" 的结果是 "1020"
  3. 要做数学计算,先用 int()float()
  4. / 是普通除法,// 是整除,% 是取余。
  5. 保留固定小数位,优先用 f"{x:.2f}"
  6. int(3.9) 的结果是 3,不是 4
  7. 输出格式要和题目样例一致,尤其是小数位数和空格。

十一、今天建议怎么学

你每天大约 1 小时,但打代码慢,所以我建议这样安排:

  1. 读讲解:15 分钟。
  2. 手敲例题:15 分钟。
  3. 做选择题:10 分钟。
  4. 做仿真练习 1 到 3:20 分钟。
  5. 提交题只做 1 到 2 道,别贪多。

如果你今天时间紧,优先做:

  1. 例题 4:拆分三位数。
  2. 练习 4:秒数转换。
  3. 提交题 2:四位数各位数字之和。

因为这三题能快速练出 //% 的手感。