Skip to content

Python 数据类型综合练习 ​

这一部分已经学习了变量、输入输出、数字、字符串、布尔值和运算符。接下来通过 5 个练习把这些知识串起来。

练习按难度逐步增加:

练习主要知识点
两个数字相加input()、字符串与类型转换
生成语言介绍字符串格式化
构造分页 URL输入、类型转换和 f-string
检查学习信息字符串、布尔值和逻辑运算
判断水仙花数整除、取余、幂运算和比较

建议先独立完成,再展开参考答案。答案可以运行不代表已经掌握,还要能够解释每一步为什么这样写。

练习一:两个数字相加 ​

运行下面的代码,依次输入 12 和 8:

python
number1 = input("请输入第一个数字:")
number2 = input("请输入第二个数字:")
result = number1 + number2

print("计算结果:", result)

你会看到:

text
请输入第一个数字:12
请输入第二个数字:8
计算结果: 128

完成下面两个任务:

  1. 解释结果为什么是 128,而不是 20
  2. 修改代码,让程序完成数字加法

输入字符串拼接与 int 转换后数字相加的对比图

参考答案

input() 得到的内容都是字符串。字符串使用 + 时会进行拼接,所以 "12" + "8" 的结果是 "128"。

参与计算前,先使用 int() 转换数据类型:

python
number1 = int(input("请输入第一个数字:"))
number2 = int(input("请输入第二个数字:"))
result = number1 + number2

print("计算结果:", result)

这次的结果是:

text
计算结果: 20

练习二:生成语言介绍 ​

根据下面的变量生成一句完整介绍:

python
language_name = "Python"
language_type = "动态解释型"
start_time = "1989 年圣诞节期间"

目标结果:

text
Python 是一门动态解释型语言,起源于 1989 年圣诞节期间

可以任选 f-string、.format() 或 % 完成。建议先使用 f-string,再尝试另外两种写法。

多个变量通过 f-string 生成语言介绍的流程图

参考答案

f-string

python
language_name = "Python"
language_type = "动态解释型"
start_time = "1989 年圣诞节期间"

message = f"{language_name} 是一门{language_type}语言,起源于 {start_time}"
print(message)

.format()

python
language_name = "Python"
language_type = "动态解释型"
start_time = "1989 年圣诞节期间"

message = "{} 是一门{}语言,起源于 {}".format(
    language_name,
    language_type,
    start_time,
)
print(message)

% 格式化

python
language_name = "Python"
language_type = "动态解释型"
start_time = "1989 年圣诞节期间"

message = "%s 是一门%s语言,起源于 %s" % (
    language_name,
    language_type,
    start_time,
)
print(message)

练习三:构造分页 URL ​

某个课程资源网站使用下面的地址格式:

text
https://example.com/category/类别编号_页码.html

例如,类别编号为 2、页码为 3 时,地址是:

text
https://example.com/category/2_3.html

请接收用户输入的类别编号和页码,再使用 f-string 生成完整 URL。

一次运行结果可以是:

text
请输入类别编号:2
请输入页码:3
页面地址:https://example.com/category/2_3.html

类别编号和页码构造 URL 的流程图

参考答案
python
category_id = int(input("请输入类别编号:"))
page = int(input("请输入页码:"))

url = f"https://example.com/category/{category_id}_{page}.html"
print(f"页面地址:{url}")

这个练习只生成一个页面地址。学完循环后,就可以让程序自动生成多个类别、多个页码的地址。

练习四:检查学习信息 ​

一个学习记录需要同时满足下面两个条件才能提交:

  1. 学生姓名不能为空
  2. 课程名称中必须包含 Python

请接收学生姓名和课程名称,并输出两个条件以及最终提交状态。

一次运行结果可以是:

text
请输入学生姓名:小明
请输入课程名称:Python 核心编程
姓名有效: True
Python 课程: True
可以提交: True

学习信息双条件校验流程图

参考答案
python
student_name = input("请输入学生姓名:").strip()
course_name = input("请输入课程名称:").strip()

has_student_name = bool(student_name)
is_python_course = "Python" in course_name
can_submit = has_student_name and is_python_course

print("姓名有效:", has_student_name)
print("Python 课程:", is_python_course)
print("可以提交:", can_submit)

可以尝试直接按回车,或者输入不包含 Python 的课程名称,观察最终结果怎样变化。

练习五:判断水仙花数 ​

一个三位数,如果每一位数字的三次方之和等于它本身,就叫作水仙花数。

例如:

text
153 = 1 ** 3 + 5 ** 3 + 3 ** 3

请接收一个三位整数,分别取出百位、十位和个位,再判断它是不是水仙花数。

当前阶段只需要输出判断结果,不需要使用循环找出所有水仙花数。

输入 153 时,运行结果应为:

text
请输入一个三位整数:153
百位: 1
十位: 5
个位: 3
是否为水仙花数: True

水仙花数拆分数字并计算各位数字三次方之和的流程图

参考答案
python
number = int(input("请输入一个三位整数:"))

hundreds = number // 100
tens = number // 10 % 10
ones = number % 10

power_sum = hundreds ** 3 + tens ** 3 + ones ** 3
is_narcissistic = number == power_sum

print("百位:", hundreds)
print("十位:", tens)
print("个位:", ones)
print("是否为水仙花数:", is_narcissistic)

先用 // 去掉右侧数字,再用 % 取得最后一位。输入 123 时,最终结果会变成 False。

完成检查 ​

完成练习后,确认自己能够做到:

  1. 解释 input() 为什么需要配合类型转换
  2. 使用 f-string 把多个变量组织成一句话
  3. 使用 // 和 % 拆分数字
  4. 使用比较运算得到布尔值
  5. 使用 and 组合多个条件

下一部分开始学习流程控制。到那时,我们会使用 if 根据布尔结果执行不同代码,并使用循环批量处理数据。