题目1 [基础概念]
下列属于浮点数据的是( D )
A. True
B. -8
C. "8.0"
D. -8.0
题目2 [基础概念]
在python中,字符串是( A )
A. 用单引号或者双引号括起来都可以
B. 只能用双引号括起来
C. 只能用单引号括起来
D. 用圆括号括起来
题目3 [基础概念]
数据 10.0 是( B ) 类型的
A. 整数类型
B. 浮点类型
C. 布尔类型
D. 字符串类型
题目4 [基础概念]
python程序的扩展名是( D )
A. exe
B. doc
C. txt
D. py
题目5 [加强训练]
题干
打印自己的名片,输出以下信息:
-
姓名:xxx
-
年龄:xxx
-
体重:xxx
-
手机号:xxx
-
家庭住址:xxx
训练目标
print()
函数的使用
训练提示
在 python 中想要打印输出,需要使用什么函数?
参考方案
在 python 中想要打印输出,需要使用 print()
函数。
操作步骤
使用print()
函数直接输出每一个信息。
参考答案
# 姓名:xxx
print("姓名:刘部住")
# 年龄:xxx
print("年龄:21")
# 体重:xxx
print("体重:66kg")
# 手机号:xxx
print("手机号:xxxxxxx")
# 家庭住址:xxx
print("家庭住址:xxxxxx")
题目6 [加强训练]
题干
按以下要求书写代码:
# 1. 定义一个变量 name,存储你的名字 # 2. 定义一个变量 age,存储你的年龄 # 3. 定义一个变量 height,存储你的身高 # 4. 按照以下格式输出各变量的值在一行上. TOM 18 176.8 # 5. 按照以下格式输出变量的值. 姓名:TOM 年龄:18 身高:176.8 # 6. 分别查看变量 name, age, height 的类型
训练目标
-
定义变量的语法;
-
标识符命名规则;
-
字符串、整型、浮点型数据书写方法。
训练提示
-
定义变量的语法规则是什么?
-
标识符命名规则具体要求是什么?
-
用户个人信息的姓名、年龄、身高分别是什么数据类型,如何书写?如何转换?
-
使用 type() 函数查看变量的类型
参考方案
-
定义变量的语法:
变量名 = 值
; -
标识符命名规则:由数字、字母、下划线组成;不能数字开头,可以以数字结尾;严格区分大小写;不能使用内置关键字;
-
用户的姓名是字符串数据类型;年龄是整型数据类型;体重为浮点型数据类型。
参考步骤
定义3个变量,分别存储用户姓名、年龄、体重数据;
参考答案
# 1. 定义一个变量 name,存储你的名字
name = "张三"
# 2. 定义一个变量 age,存储你的年龄
age = 35
# 3. 定义一个变量 height,存储你的身高
height = 195.5
# 4. 按照以下格式输出各变量的值在一行上.
print(name, age, height)
# 5. 按照以下格式输出变量的值.
姓名:TOM
年龄:18
身高:176.8
print("姓名:", name)
print("年龄:", age)
print("身高:", height)
# 6. 分别查看变量 name, age, height 的类型
print(type(name))
print(type(age))
print(type(height))
题目7 [加强训练]
题干
已知用户姓名、年龄、体重数据,
要求分别使用5种方式在控制台格式化输出用户信息,
例如:名: TOM , 年龄: 18 , 体重: 66.6 公斤。
# 定义一个变量name,保存自己的名字 # 定义一个变量age,保存自己的年龄 # 定义一个变量weight,保存自己的体重 # 要求所有变量输出一行格式为: 姓名: TOM , 年龄: 18 , 体重: 66.6 公斤
训练提示
方式1: print打印多个内容
方式2: +拼接多个小字符串
方式3: %s给字符串,整数,浮点占位 原理: 把整数和浮点都转换为字符串了
方式4: %s:字符串占位 %d:整数占位 %f:浮点数占位 注意: %d和%f可以用x.y做精度控制
方式5: f"...{变量名}..." 注意: 也可以用:x.y做精度控制
参考答案
格式化字符串
注意: 今日练习5种,以后会一种方式即可
# 定义一个变量name,保存自己的名字
name = "张三"
# 定义一个变量age,保存自己的年龄
age = 18
# 定义一个变量weight,保存自己的体重
weight = 95.6
# 要求所有变量输出一行格式为: 姓名: TOM , 年龄: 18 , 体重: 66.6 公斤
# 方式1: print打印多个内容
print("姓名:", name, ", 年龄:", age, ",体重:",weight, "公斤")
# 方式2: +拼接多个小字符串
s1 = "姓名:" + name + ", 年龄:" + str(age) + ", 体重:" + str(weight) + "公斤"
print(s1)
# 方式3: %s给字符串,整数,浮点占位 原理: 把整数和浮点都转换为字符串了
s2 = "姓名:%s, 年龄:%s, 体重:%s 公斤" % (name, age, weight)
print(s2)
# 方式4: %s:字符串占位 %d:整数占位 %f:浮点数占位 注意: %d和%f可以用x.y做精度控制
s3 = "姓名:%s, 年龄:%d, 体重:%.1f 公斤" % (name, age, weight)
print(s3)
# 方式5: f"...{变量名}..." 注意: 也可以用:x.y做精度控制
s4 = f"姓名:{name},年龄:{age},体重:{weight}公斤"
print(s4)
题目8 [加强训练]
题干
用户登录系统:用户输入用户名和密码,在控制台格式化输出用户输入的用户名和密码。效果如下:
请输入用户名:binzi 请输入密码:123456 您输入的用户名是binzi, 密码是123456
训练目标
输入功能的使用
训练提示
-
在Python中,接收用户输入的数据要使用什么函数?
-
使用输入功能接收到的用户输入的数据是什么数据类型? 如何格式化输出?
参考方案
-
在Python中,接收用户输入的数据使用
input()
函数。 -
input()
函数接收到的用户输入的数据是字符串类型;使用格式化符号%s
或f{表达式}
格式化输出。
参考步骤
-
书写2个
input()
,分别接收用户输入的用户名和密码。 -
格式化输出用户输入的用户名和密码数据。
参考答案
"""
请输入用户名:binzi
请输入密码:123456
您输入的用户名是binzi, 密码是123456
"""
username = input("请输入用户名:")
password = input("请输入密码:")
print(f"您输入的用户名是:{username},密码是:{password}")
题目9 [加强训练]
题干
书写程序,制作一个加法计算器。
用户依次输入2个整数,系统自动进行加法运算,并打印结果。
训练目标
-
运算符的使用;
-
input()
接收到的数据的数据类型; -
数据类型装换。
训练提示
-
加法运算符号是什么?加法运算的数据要求的数据类型是什么?
-
input()
接收到的数据是什么数据类型? -
如何把
input()
接收到的数据转换成int
整型?
参考方案
-
加法运算符是
+
,加法运算的数据要求的数据类型是整数或浮点数; -
input()
接收到的数据是字符串类型; -
字符串转整型使用
int()
。
参考步骤
-
书写2个
input()
,分别接收2个整数的输入; -
将接收到的2个数据分别转换成整型, 并进行加法运算;
-
打印结果。
参考答案
"""
书写程序,制作一个加法计算器。
用户依次输入2个整数,系统自动进行加法运算,并打印结果。
"""
print("这是一个加法计算器,请按照要求输入两个整数,我会为您计算两数之和并打印!!!")
x = int(input("请输入第一个整数:"))
y = int(input("请输入第二个整数:"))
sum = x + y
print(f"{x} + {y}的结果是:{sum}")
题目10 [综合训练]
题干
开发程序:购物车功能。
已知A网站苹果和橘子两种水果单价(具体如下),用户根据自己的需求输入斤数, 系统计算总价并打印结果。
# 水果单价 apple_price = 6.6 orange_price = 5
训练目标
-
input()
接收到的数据是字符串类型,按需求转换数据类型; -
运算符的使用。
训练提示
-
用户根据自己的需要数据购买水果的斤数,这个斤数可能是小数,可能是整数,如何转换数据类型计算总价?
-
计算总价需要使用到哪些运算符?
参考方案
-
用户输入的斤数可能是小数也可能是整数形式的字符串数据,需要转换数据类型为浮点型才能做总价结果运算。因为, 如果用户输入小数,使用
int()
转换的时候程序会报错; 并且,一个工作中,购物钱数需要精确到小数点后2位。 -
计算总价需要使用乘法运算符
*
和 加法运算符+
。
参考步骤
-
用户分别输入购买苹果和橘子的斤数,并转换数据类型为浮点型;
-
计算总价: 总价 = 苹果单价 * 苹果斤数 + 橘子单价 * 橘子斤数;
-
打印结果
参考答案
"""
开发程序:购物车功能。
已知A网站苹果和橘子两种水果单价(具体如下),用户根据自己的需求输入斤数, 系统计算总价并打印结果。
"""
# 水果单价
apple_price = 6.6
orange_price = 5
# 获取购买重量
apple_weight = float(input("请输入苹果的公斤数:"))
orange_weight = float(input("请输入橘子的公斤数:"))
# 计算总价
sum_price = apple_price * apple_weight + orange_price * orange_weight
print(f"苹果和橘子的总价为:{sum_price}元")
Python判断语句
题目1 [加强训练]
题干
用户输入年龄,如果年龄超过60岁,输出:可以退休了。
训练目标
-
if语句基础语法的使用;
-
比较运算符的使用。
训练提示
-
用户输入年龄,Python语言中,如何接收用户输入的数据?接收到的数据的数据类型是什么?
-
超过60岁,用哪种运算符?
-
年龄超过60岁是题目中唯一的一种情况,使用哪种if语句完成逻辑判断?
参考方案
-
input()
接收用户输入的年龄,需要注意这里接收到的数据的数据类型是str; -
超过60岁,使用比较运算符中的
>
或>=
。
操作步骤
-
input()
接收用户输入的年龄,并转换数据类型为int; -
如果年龄大于60条件成立,则输出:可以退休了
参考答案
# 用户输入年龄,如果年龄超过60岁,输出:可以退休了。
# 获取用户年龄
age = int(input("请您输入年龄:"))
# 判断年龄是否达到退休
if age > 60:
print("可以退休了!!!")
题目2 [加强训练]
题干
用户输入年龄,如果年龄超过60岁,输出:"可以退休了", 否则,输出:"年轻人,加油干!"
训练目标
if…else语法
训练提示
题目描述了2种情况(年龄超过60岁和不超过60岁),涉及到2中情况需要判断的时候,使用哪种if语句格式?
参考方案
在Python中,能够判断两种情况的时候需要使用if…else…
语句。
操作步骤
-
input()
接收用户输入的年龄,并转换数据类型为int; -
如果用户输入的年龄大于60,则输出"可以退休了"; 条件不成立则输出:小伙子,加油干!
参考答案
# 用户输入年龄,如果年龄超过60岁,输出:可以退休了。
# 获取用户年龄
age = int(input("请您输入年龄:"))
# 判断年龄是否达到退休
if age > 60:
print("可以退休了!!!")
else:
print("小伙子,加油干")
题目3 [加强训练]
题干
用户输入年龄,按照如下标准书写程序,判断用户处于哪个年龄阶段,并提示:您的年龄是xx: 青少年/青年/中年/老年。
年龄段划分标准:0-17岁为青少年;18-35岁为青年;36-59为中年,60-99岁为老年。
训练目标
-
elif多重判断写法;
-
逻辑运算符的使用方法。
训练提示
-
本题中年龄段分为青少年、青年、中年、老年四种情况需要判断,在Python中,判断多种情况需要使用哪种if语句格式?
-
每个年龄段有最低和最高年龄限制,使用哪种运算符能完成对最低和最高年龄同时判断?
参考方案
-
在Python中,判断多种情况需要使用elif多重判断写法;
-
对每个年龄段的最低和最高年龄同时限制,需要使用逻辑运算符中的
and
。
操作步骤
-
input()
接收用户输入的年龄,并转换数据类型为int; -
if…elif
对不同的年龄段进行判断。
参考答案
# 年龄段划分标准:0-17岁为青少年;18-35岁为青年;36-59为中年,60-99岁为老年。
# 获取用户年龄
age = int(input("请您输入年龄:"))
if age > 0:
if age <= 17:
print("青少年")
elif age <= 35:
print("青年")
elif age <= 59:
print("中年")
elif age <= 99:
print("老年")
else:
print("老古董!!!!")
else:
print("您输入的年龄有误!!!")
题目4 [加强训练]
题干
用户登录输入验证码,已知验证码是axyz
, 验证码正确提示可以登录,否则输出:提示验证码错误。
训练目标
比较运算符==
的使用方法
训练提示
如何判断用户输入的验证码和axyz
相同?
参考方案
判断相等使用比较运算符==
。
操作步骤
-
用户输入验证;
-
if…else...判断用户输入的验证码是否和
axyz
相等。
参考答案
# 定义已知的验证码
yzm = "axyz"
# 获取用户输入的验证码
user_yzm = input("请输入您的验证码:")
# 判断验证码是否正确
if user_yzm == yzm:
print("可以登录")
else:
print("验证码错误")
题目5 [综合训练]
题干
制作用户登录系统:已知A用户注册的用户名为binzi
,密码是123456
。具体要求如下:
登录时需要先验证验证码(固定验证码为qwer
),再验证码用户名、密码。
提示:系统先验证验证码是否正确,正确后再验证用户名和密码!!!
训练目标
-
if…else语句格式
-
比较运算符
==
和 逻辑运算符 -
if嵌套语句格式
训练提示
-
如何书写程序可以先验证验证码的正确性,验证码正确后再验证用户名和密码?
-
如何判断用户输入的验证码的正确性?
-
如何判断用户名和密码的正确性?
-
逻辑运算符 and并且 or或者 not取反
参考方案
-
先判断验证码的正确性,再验证用户名和密码,需要使用if嵌套写法;
-
判断用户输入的验证码/用户名/密码的正确性要使用到比较运算符
==
。 -
登录功能要求用户名和密码必须同时正确,所以这里要使用到逻辑运算符
and
。
操作步骤
-
准备用户名、密码、验证码等数据;
-
用户输入用户名、密码、验证码;
-
判断验证码是否为
qwer
; -
如果验证码为
qwer
,再验证用户名和密码的正确性。
参考答案
# 定义已知的验证码
yzm = "qwer"
# 获取用户输入的验证码
user_yzm = input("请输入您的验证码:")
# 判断验证码是否正确
if user_yzm == yzm:
print("可以登录")
# 获取用户的用户名和密码
username = input("请输入您的用户名:")
password = input("请输入您的密码")
if username == "binzi" and password == "123456":
print("登陆成功!!!")
else:
print("用户名或者密码错误!!!")
else:
print("验证码错误")
Python判断语句
题目1 [加强训练]
题干
用户输入年龄,如果年龄超过60岁,输出:可以退休了。
训练目标
-
if语句基础语法的使用;
-
比较运算符的使用。
训练提示
-
用户输入年龄,Python语言中,如何接收用户输入的数据?接收到的数据的数据类型是什么?
-
超过60岁,用哪种运算符?
-
年龄超过60岁是题目中唯一的一种情况,使用哪种if语句完成逻辑判断?
参考方案
-
input()
接收用户输入的年龄,需要注意这里接收到的数据的数据类型是str; -
超过60岁,使用比较运算符中的
>
或>=
。
操作步骤
-
input()
接收用户输入的年龄,并转换数据类型为int; -
如果年龄大于60条件成立,则输出:可以退休了
参考答案
# 用户输入年龄,如果年龄超过60岁,输出:可以退休了。
# 获取年龄
age = int(input('请您输入年龄:'))
# 判断给提示
if age > 60:
print('可以退休了~')
题目2 [加强训练]
题干
用户输入年龄,如果年龄超过60岁,输出:"可以退休了", 否则,输出:"年轻人,加油干!"
训练目标
if…else语法
训练提示
题目描述了2种情况(年龄超过60岁和不超过60岁),涉及到2中情况需要判断的时候,使用哪种if语句格式?
参考方案
在Python中,能够判断两种情况的时候需要使用if…else…
语句。
操作步骤
-
input()
接收用户输入的年龄,并转换数据类型为int; -
如果用户输入的年龄大于60,则输出"可以退休了"; 条件不成立则输出:小伙子,加油干!
参考答案
# 用户输入年龄,如果年龄超过60岁,输出:"可以退休了", 否则,输出:"年轻人,加油干!"
# 获取年龄
age = int(input('请您输入年龄:'))
# 判断给提示
if age > 60:
print('可以退休了~')
else:
print("年轻人,加油干!")
题目3 [加强训练]
题干
用户输入年龄,按照如下标准书写程序,判断用户处于哪个年龄阶段,并提示:您的年龄是xx: 青少年/青年/中年/老年。
年龄段划分标准:0-17岁为青少年;18-35岁为青年;36-59为中年,60-99岁为老年。
训练目标
-
elif多重判断写法;
-
逻辑运算符的使用方法。
训练提示
-
本题中年龄段分为青少年、青年、中年、老年四种情况需要判断,在Python中,判断多种情况需要使用哪种if语句格式?
-
每个年龄段有最低和最高年龄限制,使用哪种运算符能完成对最低和最高年龄同时判断?
参考方案
-
在Python中,判断多种情况需要使用elif多重判断写法;
-
对每个年龄段的最低和最高年龄同时限制,需要使用逻辑运算符中的
and
。
操作步骤
-
input()
接收用户输入的年龄,并转换数据类型为int; -
if…elif
对不同的年龄段进行判断。
参考答案
"""
用户输入年龄,按照如下标准书写程序,判断用户处于哪个年龄阶段,并提示:您的年龄是xx: 青少年/青年/中年/老年。
年龄段划分标准:0-17岁为青少年;18-35岁为青年;36-59为中年,60-99岁为老年。
"""
print('---请您输入年龄,此程序将判断您处于哪个年龄阶段---')
# 获取用户年龄
age = int(input('请您输入年龄:'))
# 判断并给提示
if age > 0:
if age <= 17:
print('青少年')
elif age <= 35:
print('青年')
elif age <= 59:
print('中年')
elif age <= 99:
print('老年')
else:
print('老古董了~点赞~')
else:
print('您输入的年龄有误!')
题目4 [加强训练]
题干
用户登录输入验证码,已知验证码是axyz
, 验证码正确提示可以登录,否则输出:提示验证码错误。
训练目标
比较运算符==
的使用方法
训练提示
如何判断用户输入的验证码和axyz
相同?
参考方案
判断相等使用比较运算符==
。
操作步骤
-
用户输入验证;
-
if…else...判断用户输入的验证码是否和
axyz
相等。
参考答案
# 用户登录需要输入验证码,已知验证码是axyz, 验证码正确提示可以登录,否则输出:提示验证码错误。
# 已知验证码
yzm = 'axyz'
print(f"验证码为:{yzm}")
# 先获取验证码
user_yzm = input('请您输入验证码:')
# 再判断验证码对不对
if user_yzm == yzm:
print('可以登录~')
else:
print('验证码错误')
题目5 [综合训练]
题干
制作用户登录系统:已知A用户注册的用户名为binzi
,密码是123456
。具体要求如下:
登录时需要先验证验证码(固定验证码为qwer
),再验证码用户名、密码。
提示:系统先验证验证码是否正确,正确后再验证用户名和密码!!!
训练目标
-
if…else语句格式
-
比较运算符
==
和 逻辑运算符 -
if嵌套语句格式
训练提示
-
如何书写程序可以先验证验证码的正确性,验证码正确后再验证用户名和密码?
-
如何判断用户输入的验证码的正确性?
-
如何判断用户名和密码的正确性?
-
逻辑运算符 and并且 or或者 not取反
参考方案
-
先判断验证码的正确性,再验证用户名和密码,需要使用if嵌套写法;
-
判断用户输入的验证码/用户名/密码的正确性要使用到比较运算符
==
。 -
登录功能要求用户名和密码必须同时正确,所以这里要使用到逻辑运算符
and
。
操作步骤
-
准备用户名、密码、验证码等数据;
-
用户输入用户名、密码、验证码;
-
判断验证码是否为
qwer
; -
如果验证码为
qwer
,再验证用户名和密码的正确性。
参考答案
"""
制作用户登录系统:已知A用户注册的用户名为binzi,密码是123456。具体要求如下:
登录时需要先验证验证码(固定验证码为qwer),再验证码用户名、密码。
"""
print('---------用户登录系统--------------')
# 已知用户注册的用户名为binzi,密码是123456
name = 'binzi'
pwd = '123456'
# 已知验证码
yzm = 'qwer'
print(f"验证码为:{yzm}")
# 先获取验证码
user_yzm = input('请您输入验证码:')
# 再判断验证码对不对
if user_yzm == yzm:
# 可以登录
user_name = input('请您输入用户名:')
user_pwd = input('请您输入密码:')
if user_name == name and user_pwd == pwd:
print('登录成功~')
else:
print('用户名或者密码错误!')
else:
print('验证码错误')
Python循环语句
题目 1 [加强训练]
题干
使用for循环计算1 - 100 之间的累加和
训练目标
range()的使用
训练提示
-
range()方法的作用
-
for循环如何使用
-
累加重新辅助
参考方案
-
使用for寻遍遍历1~100
-
进行累加重新赋值
操作步骤
-
定义变量sum,初始化sum=0
-
遍历1~100的所有的值
-
进行累加和
参考答案
sum = 0
for i in range(1, 101):
sum += i
print(sum)
题目 2 [加强训练]
题干
要求用户输入一个字符串,遍历当前字符串并打印,如果遇见“q”,则终止循环
训练目标
-
for循环的基本使用
-
break的作用
训练提示
-
for 循环的基本语法是什么
-
for循环的作用是什么
-
break的作用?
参考方案
-
使用for循环遍历当前字符串
-
判断每一字符是什么进行操作
操作步骤
-
提示用户输入字符串
-
便利当前字符串
-
如果是“q”则退出
-
打印字符
参考答案
a = input("输入一个字符串:")
for i in a:
if i == 'q':
break
print(i)
题目 3 [加强训练]
题干
使用for循环计算100 - 999 之间的偶数的个数
训练目标
range(x,y,z)的使用
计数思想
训练提示
-
range()方法的作用
-
for循环如何使用
-
计数思想
参考答案:
sum = 0
for i in range(100, 999, 2):
sum += 1
print(sum)
题目 4 [加强训练]
题干
要求用户输入一个字符串,遍历当前字符串并打印,如果遇见“e”,则终止循环。如果遇见' '
(空格)则跳过当前输出。
训练目标
-
for循环的基本使用
-
break的作用
-
continue的作用
训练提示
-
for 循环的基本语法是什么
-
for循环的作用是什么
-
break的作用?
-
continue的作用?
参考方案
-
使用for循环遍历当前字符串
-
判断每一字符是什么进行操作
操作步骤
-
提示用户输入字符串
-
便利当前字符串
-
如果是“e”则退出,如果是“ ”(空格)则跳过本次循环
-
打印字符
参考答案
a = input("输入一个字符串:")
for i in a:
if i == 'e':
break
if i == ' ':
continue
print(i)
题目5 [加强训练]
题干
编写代码模拟用户登陆。要求:用户名为 binzi,密码 123456,如果输入正确,打印“欢迎光临”,程序结束,如果输入错误,提示用户输入错误并重新输入
训练目标
-
while中的break的使用
训练提示
-
定义变量,用户名和密码采用什么格式存储
-
循环没有次数限制,那么我们使用while循环的时候条件是什么?
-
判断用户名和密码是否相同,我们的条件采用“or"还是“and”?
-
break的作用是什么
参考方案
-
首先我们要自己定义用户名和密码保存
-
如果用户错误那么就需要重新循环,我们就需要采用什么方式进行循环?
-
提示用户输入信息
-
判断输入信息,根据不同的结果进行不同的执行方式
操作步骤
-
定义名户名和密码分别为name = "binzi",pwd = "123456"
-
使用循环,循环条件是True
-
提示用户输入用户名和密码
-
判断用户名和密码是否正确
-
如果正确跳出循环,不正确提示输入错误
参考答案
while True:
username = input("请输入你的用户名:")
password = input("请输入你的密码:")
if username == "binzi" and password == "123456":
print("欢迎光临")
break
else:
print("输入错误并重新输入。")
题目6 [加强训练]
题干
设计"过7 游戏” 程序,即在 1- 99 之间的数字中,如果数字 包含 7 或者是 7 的倍数,则输出"过...", 否则输出 具体的数字.
训练目标
-
while 循环的使用
-
运算符的使用
训练提示
-
如何取得 1-99 之间的数字
-
如何判断一个数是7的倍数
-
如何判断一个数是否包含 数字 7
参考方案
-
使用循环获取 1-99 之间的数字
-
判断一个数是否是 7 的倍数,即能否被 7 整除,在 python 可以使用
%
运算符判断7的倍数: i % 7 == 0 找出: 7 14 21 ...
-
判断一个数字是否包含 7,可能个位是 7,也可能是十位数字是 7
判断个位 : i % 10 == 7 找出: 7 17 27 ...
判断十位: i // 10 == 7 找出: 70 71 72 ...
操作步骤
-
使用循环得到 1 - 100 之间的数字
-
判断是否是 7 的倍数和包含 7
参考答案
i = 0
while i < 99:
i += 1
if i % 7 == 0 or i % 10 == 7 or i // 10 == 7:
print("过")
else:
print(i)
Python函数基础
简答题:
1.请简述下函数的通用定义和调用格式:
通用定义格式 def 函数名(形参): 函数体 return 返回值 通用调用格式 变量 = 函数名(实参)
2.请简述下函数的注意事项:
1.函数必须先定义再调用 2.函数不调用不执行 3.函数可以重复调用 4.定义函数的时候没有形参,调用的时候就不需要传递实参 5.定义函数的时候没有return返回值,调用的时候就不需要接收返回值 6.无参无返回值调用格式: 函数名() 7.有参无返回值调用格式: 函数名(实参) 8.有参有返回值调用格式: 变量接收返回值=函数名(实参) 9.函数如果没有return返回值,函数体最后默认返回了None
题目1 [加强训练]
题干
定义一个简单的函数run,函数的功能是输出"我在跑步" 以及 “管住嘴,迈开腿”,并调用此函数。
训练目标
-
如何定义一个函数
-
调用函数的方式
训练提示
-
定义函数的形式是什么?声明函数的关键字是什么?
-
怎么让函数运行?
参考方案
-
用def关键字定义函数
-
用函数名+小括号的方式来调用函数
操作步骤
-
函数定义,书写函数代码
-
函数调用,运行函数代码
参考答案
def run():
print("我在跑步。")
print("管住嘴,迈开腿")
run()
题目2 [加强训练]
题干
在第一题中,我们已经用函数run实现了一些功能,如果我们想run函数做的操作执行1000遍,怎么实现代码?
####训练目标
-
让同学们知道应用函数的好处
训练提示
-
我们用run函数来实现一个功能,实现一次功能就调用一次run函数,那么实现1000遍怎么实现呢?
参考方案
-
执行1000遍函数,可以调用1000次函数
-
可以用for循环来实现1000次调用
参考答案
def run():
print("我在跑步。")
print("管住嘴,迈开腿")
for i in range(1000):
run()
题目3 [加强训练]
题干
现在我们来实现一个有参数有返回值的函数multiplication,并实现调用,要求如下 :
我们要用函数来实现7与13两个数字的乘法运算,并返回两个数的计算结果进行输出
训练目标
-
如何定义一个有参数有返回值的函数
-
如何调用有参数有返回的函数
训练提示
-
定义函数的关键字是什么?
-
定义的函数有参数,形式参数要不要写?
-
依然使用函数名()的方式来调用,是不是仅仅这样就可以?
参考方案
-
def定义一个有参数的函数,写上形式参数
-
用return来返回返回值
参考答案
def multiplication():
return 7 * 13
sum = multiplication()
print(sum)
Python数据容器
列表
列表的定义
# 1.需求:定义空列表: 列表名 = [] 或者 列表名 = list() # 2.需求: 定义一个列表存储'张三','李四','王五'等多个学生姓名
参考答案
s1 = []
s2 = ['张三','李四','王五']
列表的下标索引
# 需求:定义列表 存["张三", "李四", "王五"] # 需求: 在所有姓名列表中找到下标索引为1的姓名 # 需求: 在所有姓名列表中找到下标索引为-1的姓名 # 需求: 在所有姓名列表中找到张三
参考答案
s1 = ['张三', '李四', '王五']
print(s1[1])
print(s1[-1])
print(s1[0])
列表的增加操作
# 需求: 做核酸早上刚开始没有人排队(定义空列表) # 需求: 张三排队到末尾 # 需求: 李四和王五夫妻俩一起排队到末尾 # 需求: 赵六走关系需要插队到第一个位置
参考答案
acid = []
acid.append("张三")
acid.append(["李四", "王五"])
acid.insert(0,"赵六")
print(acid)
列表的删除操作
# 需求: 已知做核酸队列['赵六', '张三', '李四', '王五'] # 需求: 删除第一个位置的元素 # 需求: 移除做完核酸的张三 # 需求: 清空列表中所有元素
参考答案
acid = ['赵六', '张三', '李四', '王五']
del acid[0]
print(acid)
acid.remove("张三")
print(acid)
acid.clear()
print(acid)
列表的修改操作
# 需求: 定义已知数字序列[30,20,10,40] # 需求: 把第一个位置的元素值修改成33
参考答案
# 需求: 定义已知数字序列[30,20,10,40]
num_list = [30,20,10,40]
# 需求: 把第一个位置的元素值修改成33
num_list[0] = 33
列表的查询操作
# 需求: 定义列表,已知数据['张三','李四','王五','张三'] # 需求: 查询张三在列表中出现次数 # 需求: 查询李四在列表中的下标索引 # 需求: 查询names列表中有多少个元素
参考答案
name = ['张三', '李四', '王五', '张三']
print(name.count("张三"))
print(name.index("李四"))
元组
元组的定义
# 需求: 定义 空元组格式两种方式 # 需求: 定义非空元组存储'张三', '李四', '王五' # 注意: 如果元组只存储一个元素'赵六'
参考答案
s1 = set()
s2 = ('张三', '李四', '王五')
# s3 = ('赵六',)
元组的查询操作
# 需求: 定义一个元组,存储'张三','李四','王五','张三' # 需求: 查询第一个位置的元素 # 需求: 查询张三元素在元组中出现次数 # 需求: 查询李四元素在元组中的下标索引 # 需求: 查询names元组当前元素的个数
参考答案
s1 = ('张三', '李四', '王五', '张三')
print(s1[0])
print(s1.count("张三"))
print(s1.index('李四'))
print(len(s1))
元组的遍历操作
# 需求: 定义元组,存储张三,李四,王五,赵六 # 需求: 依次把names元组中每个名字取出打印到控制台 # while循环方式 # for循环方式
参考答案
s1 = ('张三', '李四', '王五', '赵六')
for i in s1:
print(i)
x = 0
while x < len(s1):
print(s1[x])
x += 1
字符串
题目1 [加强训练]
题干
如果需要使用变量保存以下字符串,我们该如何书写代码
鲁迅说:'我没有说过这句话'
训练目标
让学员知道含有字符串嵌套的方式
训练提示
在python中,有两种表现形式都可以定义为字符串类型,是哪两种方式,是否可以混合使用呢
参考方案
使用 " " 和 ' ' 都可以对字符串进行定义
操作步骤
-
想要在在一个字符串中包含
双引号""
, 字符串可以使用单引号定义 -
想要在在一个字符串中包含
单引号''
, 字符串可以使用双引号定义
参考答案
print("'我没有说过这句话'")
print('"我没有说过这句话"')
题目2 [加强训练]
题干
做一个简单的用户信息管理系统: 提示用户依次输入姓名,年龄和爱好 并且在输入完成之后,一次性将用户输入的数据展示出来
训练目标
字符串的声明 字符串的输入 字符串的输出
训练提示
-
在python中,通过 "" 或者 '' 声明一个字符串类型的变量
-
使用input()函数从键盘获取数据
-
格式化输出字符串
参考方案
-
通过input函数进行字符串数据的录入
-
使用 string 类型保存录入的数据
-
格式化输出字符串
操作步骤
-
通过input函数进行字符串数据的录入
-
使用 string 类型保存录入的数据
-
格式化输出字符串
参考答案
c1 = ""
name = input("请输入你的名字:")
c1 = c1 + name
age = input("请输入你的年龄:")
c1 = c1 + age
play = input("请输入你的爱好:")
c1 = c1 + play
print(c1)
题目3[加强训练]
题干
james有一个关于爬虫的项目,他需要在一个字符串中查找python这个关键字,当前他通过index()函数进行查找,虽然可以实现查找的需求,但是总会在没有查找到关键字的时候报错,为什么会报错,如何优化?
训练目标
-
理解find函数和index函数的区别
参考答案
使用find函数替换index,因为find函数在找不到时不会报错,会返回-1
题目4(加强训练)
题干
# 演示要求把字符串中敏感词替换为挺萌的 # 需求: 定义字符串 存储 '你TMD哦' # 需求: 利用replace把TMD替换成挺萌的
训练目标
理解replace函数功能
训练提示
字符串.replace(敏感词, '***')
参考答案
s1 = '你TMD哦'
print(s1.replace("TMD","挺萌的"))
题目5(加强训练)
题干
# 需求: 定义字符串'苹果,香蕉,橘子,橙子,榴莲' # 需求: 要求把所有水果分开单独放到一个容器中要求结果:['苹果', '香蕉', '橘子', '橙子', '榴莲'] # 需求: 查看切割后容器类型 # 需求: 使用切割后生成的列表
训练目标
理解split函数功能
训练提示
分析: 使用split根据逗号,把水果字符串切割成多个小字符串放到列表中
列表名 = 字符串.split(',')
参考答案
fru = "苹果,香蕉,橘子,橙子,榴莲"
fru2 = fru.split(",")
print(fru2)
序列
题目1 [加强训练]
题干
现有字符串如下,请使用切片提取出ceg words = "abcdefghi"
训练目标
字符串的切片使用
训练提示
1, 切片的语法:字符串变量[起始:结束:步长] 2, 选取的区间从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身), 3, 步长表示选取间隔,
默认步长是正值,即从左到右选取,
如果步长为负值,则从右向左选取
参考方案
1,使用切片进行截取,起始位置是2,结束位置是8,步长为2 2,使用切片进行截取,起始位置是-7,结束位置是-1,步长为2
操作步骤
1.起始位置是2,结束位置是8,步长为2
2.起始位置为-7,结束位置是-1,步长为2
参考答案
words = "abcdefghi"
print(words[2:8:2])
print(words[-7:-1:2])
集合
题目1
题干
请创建一个空集合set1
训练目标
集合的创建
训练提示
集合是用{}符号来标识的,那么怎么是否是直接用 set1 = {} 是不是?
参考方案
应该是用到set()这个方法来初始化,而不是用set1 = {}来做,因为这样创建出来的是一个空字典
操作步骤
字节使用set()即可
参考答案
set1 = set()
题目2
题干
有一个集合set1 = {1,2,3,4} 请实现:给set1添加一个元素5
训练目标
集合的增加操作
训练提示
上课的时候讲师是否讲过一个add方法?
参考方案
用add()实现集合的增加操作
操作步骤
直接用add()
参考答案
set1 = {1, 2, 3, 4}
set1.add(5)
print(set1)
字典
题目1
题干
有一个空字典dict1 = {},请给他添加一个为name:python的键值对
训练目标
-
字典中添加键值对的操作。
-
字典是可变类型的。
训练提示
-
现在给定了一个字典,字典是什么类型的?
-
字典是可变类型的,那么是不是意味着可以执行添加操作?
-
执行添加操作,要怎么执行?
参考方案
-
给字典新增一个名为name的键
-
使用“=”符号,给这个键赋值一个值为python的字符串
操作步骤
-
dict1["name"]来指定键的名称,用‘=’来进行赋值操作
参考答案
dict1 = {}
dict1["name"] = "python"
print(dict1)
题目2
题干
现有字典dict1 = {'name':'python'},将键为'name'的值更改为'chuanzhi'
训练目标
字典中键值对的更改操作
训练提示
-
已经有了一个键值对,要对其进行更改值
-
此时只需要使用'='来执行赋值操作就行
参考方案
-
先指定要更改的键
-
使用“=”符号,给这个键赋值一个值为python的字符串
操作步骤
-
dict1["name"]来指定键的名称,用‘=’来赋值要更改的值('chuanzhi')
参考答案
dict1 = {'name': 'python'}
dict1['name'] = "chuanzhi"
print(dict1)dict1 = {'name': 'python'}
dict1['name'] = "chuanzhi"
print(dict1)
题目3
题干
现有字典dict1 = {'name':'chuanzhi','age':18} 要求:
1.使用循环将字典中所有的键输出到屏幕上 2.使用循环将字典中所有的值输出到屏幕上 3.使用循环将字典中所有的键值对输出到屏幕上 输出方式: name:chuanzhi age:18
训练目标
-
for循环的使用复习
-
学会如何获取字典所有的键
-
学会如何获取字典所有的值
-
学会如何获取字典所有的键值对
训练提示
-
用for来实现循环
-
用字典.keys()来获取所有的键
-
根据key找值
-
用字典.values()来获取所有的值
-
用字典.items()来获取所有的键值对
参考答案
dict1 = {'name': 'chuanzhi', 'age': 18}
keys = dict1.keys()
values = dict1.values()
kvs = dict1.items()
for key in keys:
print(key)
for value in values:
print(value)
for kv in kvs:
print(kv)
综合练习
题目1 [加强训练]
题干
有这样的一个列表 product=[ {"name":"电脑","price":7000}, {"name":"鼠标","price":30}, {"name":"usb电动小风扇","price":20}, {"name":"遮阳伞","price":50} ],然后小明一共有8000块钱,那么他能不能买下这所有商品? 如果能,请输出“能”,否则输出“不能”
训练目标
if判断语句的复习使用 列表与字典的复合使用 遍历列表与遍历字典的使用
训练提示
题目中给了“能不能”三个字,那么这时候用什么语句来实现呢? 题目中数据是用列表来套字典来存储的,那么获取数据是不是要遍历呢? 在判断能不能买下的时候,那么要用那两个数据进行判断呢,这两个数据分别是什么?
参考答案
product = [
{"name": "电脑", "price": 7000},
{"name": "鼠标", "price": 30},
{"name": "usb电动小风扇", "price": 20},
{"name": "遮阳伞", "price": 50}
]
a = 0
m = 8000
while a < len(product):
m = m - product[a]["price"]
a = a + 1
if m >= 0:
print("能")
else:
print("不能")
题目2 [加强训练]
题干
有一个列表,判断列表中的每一个元素是否以s或e结尾,如果是,则将其放入一个新的列表中,最后输出这个新的列表
list1 = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"]
训练目标
让学员知道列表的循环和值的获取,以及列表的操作方法
训练提示
-
如何找到列表中的每一个元素?
-
如何判断列表中的元素以什么字符结尾?
参考方案
-
使用循环遍历的方式获取列表中的每一个元素?
-
列表中的元素为字符串,所以可以使用下标[-1] 来获取最后一个字符的值,然后判断.
操作步骤
-
遍历列表中的每一个元素
-
if 判断 最后一个字符是否是
s
或者e
-
如果是,使用 append() 方法,将数据追加到新的列表中.
参考答案
方式1
list1 = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"]
list = []
for i in list1:
if i[-1] =='s' or i[-1] =='e':
list.append(i)
print(list)
方式2
list1 = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"]
list = []
a = 0
while a < len(list1):
if list1[a][-1] == 's' or list1[a][-1] == 'e':
list.append(list1[a])
a += 1
print(list)
Python文件操作
题目1(简答题)
请使用自己的话来说一说文件操作的基本流程是如何的?
考察知识点
-
文件操作
参考答案
打开文件 操作文件(读、写、追加) 关闭文件
题目2(实操题)
请使用文件操作
将一个图片文件进行备份处理功能,备份文件名为:xxx[副本]后缀,比如xxx[副本].jpg。
考察知识点
-
文件操作
-
读写数据
参考答案
# 打开文件用于读取数据,使用rb模式读取二进制数据
f_read = open('xxx.jpg', mode='rb')
f_write = open('xxx[副本].jpg', mode='wb')
# 处理数据
data = f_read.read()
f_write.write(data)
# 关闭文件
f_read.close()
f_write.close()
题目3(实操题)
请使用文件操作
将一个视频文件进行备份处理功能,备份文件名为:xxx[副本]后缀,比如xxx[副本].mp4。
考察知识点
-
文件操作
-
读写数据
参考答案
# 打开文件用于读取数据,使用rb模式读取二进制数据
f_read = open('xxx.mp4', mode='rb')
f_write = open('xxx[副本].mp4', mode='wb')
# 处理数据
data = f_read.read(29640 * 512)
f_write.write(data)
# 关闭文件
f_read.close()
f_write.close()
题目4(实操题)
请使用文件操作
将一个视频文件一半内容
进行备份处理功能,备份文件名为:xxx[副本]后缀,比如xxx[副本].mp4。
考察知识点
-
文件操作
-
读写数据
参考答案
# 打开文件用于读取数据,使用rb模式读取二进制数据
f_read = open('xxx.mp4', mode='rb')
f_write = open('xxx[副本].mp4', mode='wb')
# 处理数据
lines = f_read.readlines()
middle_index = len(lines) / 2
i = 0
new_lines = []
while i < middle_index:
new_lines.append(lines[i])
f_writelines(new_lines)
# 关闭文件
f_read.close()
f_write.close()
Python异常模块
题目1(简答题)
请列举至少4个常见的异常,并对异常进行解释说明其表示含义,最好使用案例能制造出该异常。
考察知识点
-
异常
-
常见异常名称
参考答案
# TypeError 1+'1'
# NameError print(a)
# IndexError list1[9] dict1['key1']
# FileNotFoundError open('test.txt')
# ModuleNotFoundError import numpy
# ClassNotFountError pip
题目2(简答题)
请阐述一下Python中导入模块的几种方式,并说明其含义。
考察知识点
-
模块导入
-
关键字
参考答案
import 模块名1[, 模块名2, 模块名3...]
from 模块名 import 功能名1[,功能名2, 功能名3...]
from 模块名 import *
from 包名 import 模块名1[, 模块名2, 模块名3...]
题目3(实操题)
从键盘上输入一个5位数(数字),判断它是不是回文数。所谓的回文数,指的是个位与万位相同、十位与千位相同的整数,例如:12321是回文数。
(1)设计一个函数用来判断某个5位数是否为回文数;
(2)提升程序的稳定性,可以对程序进行异常处理。
考察知识点
-
函数
-
异常处理
参考答案
# 从键盘上输入一个5位数(数字),判断它是不是回文数。所谓的回文数,指的是个位与万位相同、十位与千位相同的整数,例如:12321是回文数。
def is_hui_wen(num2):
"""
这是一个判断是否是回文数的函数
:param num2: 被判断的数字
:return: None
"""
# 判断是否是5位数字
if 10000 <= num2 <= 99999:
# 获取个位数
ge_wei = num2 % 10
# 获取十位数 12546 % 100 = 46 // 10 = 4
shi_wei = (num2 % 100) // 10
# 获取千位数 12546 % 10000 = 2546 // 1000 = 2
qian_wei = (num2 % 10000) // 1000
# 获取万位数
wan_wei = num2 // 10000
# 判断
if ge_wei == wan_wei and shi_wei == qian_wei:
print(f"{num2}是回文数字")
else:
print(f"{num2}不是回文数字")
else:
print(f"{num2}输入的不是5位数字")
if __name__ == '__main__':
# 从键盘录入5位数
str1 = input("请输入一个5位的数字:")
try:
# 将字符串转换为int类型
num1 = int(str1)
# 调用函数判断是否是回文数
is_hui_wen(num1)
except ValueError as e:
print(f"出现了异常,信息为:{e}")
题目4(实操题)
请独立完成从键盘上输入某年-某年,并计算出年份之间的所有闰年年份。比如:1800年~2030年,闰年有哪些?
(1)提示:闰年就是能被4整除,且不能被100整除,或者能被400整除的年份。
;
(2)每隔2个闰年,则换一行输出;
(3)可使用函数完成。
考察知识点
-
综合运用
-
函数
参考答案
# 请独立完成从键盘上输入某年-某年,并计算出年份之间的所有闰年年份。
def calculate_yun_year(start, end):
"""
统计从起始年份到结束年份中的闰年有哪些
:param start: 起始年份
:param end: 结束年份
:return:
"""
# 定义计数变量
count = 0
# 从起始年份到结束年份遍历所有的年份
for year in range(start, end + 1):
# 闰年就是能被4整除,且不能被100整除,或者能被400整除的年份。
if (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0):
count += 1
# 每隔2个闰年,则换一行输出
print(year, end='\t')
if count % 2 == 0:
print("")
print(f"本次计算的闰年一共有{count}个")
if __name__ == '__main__':
try:
# 从键盘输入年份的范围
start_year = int(input("请输入起始年份:"))
end_year = int(input("请输入结束年份:"))
# 计算闰年
calculate_yun_year(start_year, end_year)
except Exception as e:
print(f"{e}")
动态抽奖的案例
-
需求:
(1)使用所学知识来完成一个动态抽奖系统案例;
(2)咱们班的学生姓名保存在学生名单.txt
中。
(3)从键盘录入一个数字,根据数字随机姓名对应个数的人名。
import random
def get_winners(students, num_winners):
"""
随机获取中奖学生名单
:param students: 所有的学生名单
:param num_winners: 中奖的人数
:return:
"""
if not students:
print("错误:学生名单为空,无法抽奖!!!")
return []
if num_winners > len(students):
print("错误:中奖人数不能超过学生总人数!!!")
return []
# random.sample(参数1, 参数2):随机从数据容器中获取指定个数的元素
# 参数1:指定的数据容器
# 参数2:指定的获取个数
# winners = random.sample(students, num_winners)
# return winners
# 打乱数据容器中的元素
random.shuffle(students)
# 定义空列表保存随机获取的学生名单
winners = []
# 使用for循环获取指定个数的元素
for i in range(num_winners):
winners.append(students[i])
return winners
if __name__ == '__main__':
# 获取学生名单
f = open(file='学生名单.txt', mode='r', encoding='utf8')
students = f.readlines()
print(students)
while True:
# 获取中奖人数
num_winners = int(input("请输入抽取的中奖人数:"))
# 根据中奖人数获取学生名单
winners = get_winners(students, num_winners)
print(winners)
# 当输入为0时结束循环
if num_winners == 0:
break
# 关闭文件
f.close()
Python正则表达式
题目1(实操题)
请使用正则表达式来完成:
(1)匹配100-1000之间的任意数;
(2)匹配出6到20位的用户昵称,可以是大小写英文字母、数字、下划线;
(3)匹配出QQ号,注意:QQ号全是数字,且当前位数有6位、7位、8位、9位、10位、11位;
(4)匹配任意字符;
(5)请提取字符串“黑马程序员官方客服400-618-9090,欢迎拨打!”中的联系方式。
(6)编写一个函数,用于匹配并提取电子邮件地址中的用户名部分
考察知识点
-
正则表达式
-
re模块
参考答案
import re
# (1)匹配100-1000之间的任意数;
result = re.match(pattern='^1000$|^[1-9]\d\d$', string='999').group()
print(f"结果1:{result}")
# (2)匹配出6到20位的用户昵称,可以是大小写英文字母、数字、下划线;
result = re.match(pattern='\w{6,20}', string='helloHDfS213').group()
print(f"结果2:{result}")
# (3)匹配出QQ号,注意:QQ号全是数字,且当前位数有6位、7位、8位、9位、10位、11位;
result = re.match(pattern='[^0]\d{6,11}', string='123145647').group()
print(f"结果3:{result}")
# (4)匹配任意字符;
result = re.match(pattern='.', string='\n', flags=re.DOTALL).group()
print(f"结果4:{result}")
# (5)请提取字符串“黑马程序员官方客服400-618-9090,欢迎拨打!”中的联系方式。
result = re.search(pattern='(\d{3})-(\d{3})-(\d{4})', string="黑马程序员官方客服400-618-9090,欢迎拨打!").group(1)
print(f"结果5:{result}")
# (6)编写一个函数,用于匹配并提取电子邮件地址中的用户名部分
# helloykl@itcast.cn
def extract_username(email):
"""
用于抽取电子邮件中的用户名
:param email: 被抽取的电子邮件的地址
:return: 用户名
"""
result = re.match(pattern='(^\w+)@', string=email)
if result:
username = result.group(1)
return username
else:
return None
emails = ["user123@qq.com", "aaabbb163.com", "helloykl@itcast.cn"]
# 定义列表接收多个抽取结果
usernames = []
for email in emails:
# 如果抽取结果不为None,将结果追加到列表中
if extract_username(email):
usernames.append(extract_username(email))
print(usernames)
print([extract_username(email) for email in emails if extract_username(email)])