Python 数据类型综合练习
这一部分已经学习了变量、输入输出、数字、字符串、布尔值和运算符。接下来通过 5 个练习把这些知识串起来。
练习按难度逐步增加:
| 练习 | 主要知识点 |
|---|---|
| 两个数字相加 | input()、字符串与类型转换 |
| 生成语言介绍 | 字符串格式化 |
| 构造分页 URL | 输入、类型转换和 f-string |
| 检查学习信息 | 字符串、布尔值和逻辑运算 |
| 判断水仙花数 | 整除、取余、幂运算和比较 |
建议先独立完成,再展开参考答案。答案可以运行不代表已经掌握,还要能够解释每一步为什么这样写。
练习一:两个数字相加
运行下面的代码,依次输入 12 和 8:
number1 = input("请输入第一个数字:")
number2 = input("请输入第二个数字:")
result = number1 + number2
print("计算结果:", result)你会看到:
请输入第一个数字:12
请输入第二个数字:8
计算结果: 128完成下面两个任务:
- 解释结果为什么是
128,而不是20 - 修改代码,让程序完成数字加法
参考答案
input() 得到的内容都是字符串。字符串使用 + 时会进行拼接,所以 "12" + "8" 的结果是 "128"。
参与计算前,先使用 int() 转换数据类型:
number1 = int(input("请输入第一个数字:"))
number2 = int(input("请输入第二个数字:"))
result = number1 + number2
print("计算结果:", result)这次的结果是:
计算结果: 20练习二:生成语言介绍
根据下面的变量生成一句完整介绍:
language_name = "Python"
language_type = "动态解释型"
start_time = "1989 年圣诞节期间"目标结果:
Python 是一门动态解释型语言,起源于 1989 年圣诞节期间可以任选 f-string、.format() 或 % 完成。建议先使用 f-string,再尝试另外两种写法。
参考答案
f-string
language_name = "Python"
language_type = "动态解释型"
start_time = "1989 年圣诞节期间"
message = f"{language_name} 是一门{language_type}语言,起源于 {start_time}"
print(message).format()
language_name = "Python"
language_type = "动态解释型"
start_time = "1989 年圣诞节期间"
message = "{} 是一门{}语言,起源于 {}".format(
language_name,
language_type,
start_time,
)
print(message)% 格式化
language_name = "Python"
language_type = "动态解释型"
start_time = "1989 年圣诞节期间"
message = "%s 是一门%s语言,起源于 %s" % (
language_name,
language_type,
start_time,
)
print(message)练习三:构造分页 URL
某个课程资源网站使用下面的地址格式:
https://example.com/category/类别编号_页码.html例如,类别编号为 2、页码为 3 时,地址是:
https://example.com/category/2_3.html请接收用户输入的类别编号和页码,再使用 f-string 生成完整 URL。
一次运行结果可以是:
请输入类别编号:2
请输入页码:3
页面地址:https://example.com/category/2_3.html参考答案
category_id = int(input("请输入类别编号:"))
page = int(input("请输入页码:"))
url = f"https://example.com/category/{category_id}_{page}.html"
print(f"页面地址:{url}")这个练习只生成一个页面地址。学完循环后,就可以让程序自动生成多个类别、多个页码的地址。
练习四:检查学习信息
一个学习记录需要同时满足下面两个条件才能提交:
- 学生姓名不能为空
- 课程名称中必须包含
Python
请接收学生姓名和课程名称,并输出两个条件以及最终提交状态。
一次运行结果可以是:
请输入学生姓名:小明
请输入课程名称:Python 核心编程
姓名有效: True
Python 课程: True
可以提交: True参考答案
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 的课程名称,观察最终结果怎样变化。
练习五:判断水仙花数
一个三位数,如果每一位数字的三次方之和等于它本身,就叫作水仙花数。
例如:
153 = 1 ** 3 + 5 ** 3 + 3 ** 3请接收一个三位整数,分别取出百位、十位和个位,再判断它是不是水仙花数。
当前阶段只需要输出判断结果,不需要使用循环找出所有水仙花数。
输入 153 时,运行结果应为:
请输入一个三位整数:153
百位: 1
十位: 5
个位: 3
是否为水仙花数: True参考答案
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。
完成检查
完成练习后,确认自己能够做到:
- 解释
input()为什么需要配合类型转换 - 使用 f-string 把多个变量组织成一句话
- 使用
//和%拆分数字 - 使用比较运算得到布尔值
- 使用
and组合多个条件
下一部分开始学习流程控制。到那时,我们会使用 if 根据布尔结果执行不同代码,并使用循环批量处理数据。