🎯 考点大通关
专项训练 · 共 20 题 · 本页第 1–10 题(第 1 / 2 页)
1
列表去重·反转·取偶求和(25 分)
编写程序,接收用户输入的一串整数,整数之间用英文逗号(,)分隔,然后将这一串整数构成一个整数列表 lst,每个元素保持原来的顺序且已经转化为数值类型。
(1) 列表元素去重,得到一个去除重复元素后的新列表 lst2;
(2) 将新列表 lst2 的列表元素反转后得到新列表 lst3;
(3) 找出列表 lst2 中所有的偶数,构成新列表 lst4;
(4) 求出 lst4 列表中所有元素的和,并打印结果。
编写程序,接收用户输入的一串整数,整数之间用英文逗号(,)分隔,然后将这一串整数构成一个整数列表 lst,每个元素保持原来的顺序且已经转化为数值类型。
(1) 列表元素去重,得到一个去除重复元素后的新列表 lst2;
(2) 将新列表 lst2 的列表元素反转后得到新列表 lst3;
(3) 找出列表 lst2 中所有的偶数,构成新列表 lst4;
(4) 求出 lst4 列表中所有元素的和,并打印结果。
📝 样例输入: 请输入一串整数,用英文逗号(,)分隔:1,5,2,4,3
▶ 运行结果: 6
🧩 已给出的代码
python
v=input('请输入一串整数,用英文逗号(,)分隔:')
# ***********Program***********
(考生在此处填写语句)
# ************End************▼
参考答案(填入 Program 与 End 之间)
python
lst=[int(x) for x in v.split(',')]
lst2=[]
for x in lst:
if x not in lst2:
lst2.append(x)
lst3=lst2[::-1]
lst4=[x for x in lst2 if x%2==0]
print(sum(lst4))2
group_list 分组函数(15 分)
编写一个函数 group_list(lst, group_size),将一个整数列表 lst 按照指定的分组大小 group_size 进行分组,如果列表长度不能被分组大小整除,那么最后一组的元素个数会小于分组大小。用嵌套列表保存分组后的结果,该函数返回分组后的结果,然后程序接收用户输入的一串整数,整数之间用英文逗号(,)分隔,以及用户输入的分组大小,然后调用上述函数,输出分组结果。
编写一个函数 group_list(lst, group_size),将一个整数列表 lst 按照指定的分组大小 group_size 进行分组,如果列表长度不能被分组大小整除,那么最后一组的元素个数会小于分组大小。用嵌套列表保存分组后的结果,该函数返回分组后的结果,然后程序接收用户输入的一串整数,整数之间用英文逗号(,)分隔,以及用户输入的分组大小,然后调用上述函数,输出分组结果。
📝 样例输入: 请输入一串整数,用英文逗号(,)分隔:10,20,30,40,50,60,70
分组大小:3
▶ 运行结果: [[10,20,30],[40,50,60],[70]]
🧩 已给出的代码
python
# ***********Program***********
(考生在此处填写语句)
# ************End************
print(group_list(lst,group_size))▼
参考答案(填入 Program 与 End 之间)
python
def group_list(lst, group_size):
result=[]
for i in range(0, len(lst), group_size):
result.append(lst[i:i+group_size])
return result
lst=[int(x) for x in input('请输入一串整数,用英文逗号(,)分隔:').split(',')]
group_size=int(input('分组大小:'))3
大小写与数字统计(25 分)
编写程序,实现接收一个句子,计算该句子中大写字母、小写字母和数字的数量。
编写程序,实现接收一个句子,计算该句子中大写字母、小写字母和数字的数量。
📝 样例输入: 请输入句子:My flight number is AA1234
▶ 运行结果: 大写字母 3 个,小写字母 15 个,数字 4 个
🧩 已给出的代码
python
s=input('请输入句子:')
d={"大写":0,"小写":0,"数字":0} #保存大写字母、小写字母和数字的数量,初始化为 0
# ***********Program***********
(考生在此处填写语句)
# ************End************▼
参考答案(填入 Program 与 End 之间)
python
for ch in s:
if ch.isupper():
d["大写"]+=1
elif ch.islower():
d["小写"]+=1
elif ch.isdigit():
d["数字"]+=1
print(f'大写字母{d["大写"]}个,小写字母{d["小写"]}个,数字{d["数字"]}个')4
are_anagrams 变位词(15 分)
编写一个函数 are_anagrams(s1,s2),实现检查两个字符串 s1 和 s2 是否为变位词,根据结果返回 True 或 False,然后编写测试代码,接收用户输入的两个字符串,调用上述函数,打印输出结果。变位词是由相同的字母以不同的顺序组成的单词,如 listen 和 silent。
注意:与输入单词的大小写无关,单词前后多余空格不能影响变位词的判断,短语中间的空格也不能影响变位词的判断。
编写一个函数 are_anagrams(s1,s2),实现检查两个字符串 s1 和 s2 是否为变位词,根据结果返回 True 或 False,然后编写测试代码,接收用户输入的两个字符串,调用上述函数,打印输出结果。变位词是由相同的字母以不同的顺序组成的单词,如 listen 和 silent。
注意:与输入单词的大小写无关,单词前后多余空格不能影响变位词的判断,短语中间的空格也不能影响变位词的判断。
📝 示例 1 输入: 请输入第 1 个字符串:listen
请输入第 2 个字符串:silent
▶ 示例 1 输出: listen 和 silent 是变位词
📝 示例 2 输入: 请输入第 1 个字符串:dormitory
请输入第 2 个字符串:dirty room
▶ 示例 2 输出: dormitory 和 dirty room 是变位词
🧩 已给出的代码
python
# ***********Program***********
(考生在此处填写语句)
# ************End************
print(f'{s1}和{s2}{"是变位词" if are_anagrams(s1,s2) else "不是变位词"}')▼
参考答案(填入 Program 与 End 之间)
python
def are_anagrams(s1,s2):
s1=s1.replace(' ','').lower()
s2=s2.replace(' ','').lower()
return sorted(s1)==sorted(s2)
s1=input('请输入第 1 个字符串:')
s2=input('请输入第 2 个字符串:')5
多行输入转大写输出(25 分)
编写程序,接收用户输入的多行英文句子,若不想继续输入,则用回车表示输入结束,将英文句子转大写后打印输出。
编写程序,接收用户输入的多行英文句子,若不想继续输入,则用回车表示输入结束,将英文句子转大写后打印输出。
📝 样例输入 / ▶ 运行结果: Hello!
World!
HELLO!
WORLD!
🧩 已给出的代码
python
lines=[] #保存输入的多行英文句子
while True:
# ***********Program***********
(考生在此处填写语句)
# ************End************▼
参考答案(填入 Program 与 End 之间)
python
line=input()
if line=='':
for x in lines:
print(x.upper())
break
lines.append(line)6
打印等腰三角形(15 分)
编程程序,实现输入等腰三角形的行数,用星号(*)打印等腰三角形,星号之间相隔一个空格。
编程程序,实现输入等腰三角形的行数,用星号(*)打印等腰三角形,星号之间相隔一个空格。
📝 示例 1 输入: 请输入等腰三角形的行数:3
▶ 示例 1 输出: *
* * *
* * * * *
📝 示例 2 输入: 请输入等腰三角形的行数:5
▶ 示例 2 输出: *
* * *
* * * * *
* * * * * * *
* * * * * * * * *
(以上图形均为居中输出)
🧩 已给出的代码
python
n=input('请输入等腰三角形的行数:')
# ***********Program***********
(考生在此处填写语句)
# ************End************▼
参考答案(填入 Program 与 End 之间)
python
n=int(n)
for i in range(1,n+1):
print(' '*(n-i)+' '.join('*'*(2*i-1)))💡 思路提示:教材示例中的图形为居中排版(整段带缩进),本答案按标准等腰三角形格式输出:第 i 行 2i−1 个星号,星号间隔一个空格,行前缩进 n−i 个空格。
7
N×N 乘法表(25 分)
编写程序,打印 N×N 乘法表。
编写程序,打印 N×N 乘法表。
📝 样例输入: 为了打印 N×N 乘法表,请输入 N 的值:9
▶ 运行结果: 1×1=1
2×1=2 2×2=4
3×1=3 3×2=6 3×3=9
4×1=4 4×2=8 4×3=12 4×4=16
5×1=5 5×2=10 5×3=15 5×4=20 5×5=25
6×1=6 6×2=12 6×3=18 6×4=24 6×5=30 6×6=36
7×1=7 7×2=14 7×3=21 7×4=28 7×5=35 7×6=42 7×7=49
8×1=8 8×2=16 8×3=24 8×4=32 8×5=40 8×6=48 8×7=56 8×8=64
9×1=9 9×2=18 9×3=27 9×4=36 9×5=45 9×6=54 9×7=63 9×8=72 9×9=81
🧩 已给出的代码
python
N=input('为了打印 N×N 乘法表,请输入 N 的值:')
# ***********Program***********
(考生在此处填写语句)
# ************End************▼
参考答案(填入 Program 与 End 之间)
python
N=int(N)
for i in range(1,N+1):
print(' '.join(f'{i}×{j}={i*j}' for j in range(1,i+1)))8
小球自由落体反弹(15 分)
一小球从 height 米高的塔上自由落下,每次落地后反跳回原高度的一半,再落下。计算小球在第几次反弹时高度低于 1 米,并求它第 n 次反弹的高度。
一小球从 height 米高的塔上自由落下,每次落地后反跳回原高度的一半,再落下。计算小球在第几次反弹时高度低于 1 米,并求它第 n 次反弹的高度。
📝 样例输入: 请输入塔高(米):100
你想知道第几次反弹的高度:10
▶ 运行结果: 小球在第 7 次反弹时高度低于 1 米。
小球第 10 次反弹的高度是 0.09765625 米。
🧩 已给出的代码
python
height=int(input('请输入塔高(米):'))
n=int(input('你想知道第几次反弹的高度:'))
current=height #当前高度初始化为 height
count=0 #反弹次数初始化为 0
# ***********Program***********
(考生在此处填写语句)
# ************End************▼
参考答案(填入 Program 与 End 之间)
python
while current>=1:
current=current/2
count+=1
print(f'小球在第 {count} 次反弹时高度低于 1 米。')
h=height
for _ in range(n):
h=h/2
print(f'小球第 {n} 次反弹的高度是 {h} 米。')9
水果文本匹配(25 分)
给定一个水果序列,判断一段文本中是否包含列表中的任意一种水果,并打印包含的水果名称。若不含任何一种水果,则打印空列表。
给定一个水果序列,判断一段文本中是否包含列表中的任意一种水果,并打印包含的水果名称。若不含任何一种水果,则打印空列表。
📝 示例 1 输入: 请输入一段文本:你好
▶ 示例 1 输出: 文本中包含水果:[]
📝 示例 2 输入: 请输入一段文本:今天我吃了一个橙子和一串葡萄
▶ 示例 2 输出: 文本中包含水果:['橙子','葡萄']
🧩 已给出的代码
python
fruits=["香蕉","橙子","葡萄","荔枝","蜜橘"]
# ***********Program***********
(考生在此处填写语句)
# ************End************▼
参考答案(填入 Program 与 End 之间)
python
text=input('请输入一段文本:')
result=[f for f in fruits if f in text]
print(f'文本中包含水果:{result}')10
filter_by_domain 域名过滤(15 分)
已知一个电子邮件的地址列表为 ["user1@example.com","user2@sample.org","admin@sample.org","admin@exexample.com","guest@example.com"],需要找出属于域名 domain 的邮件地址,domain 可以是 example.com 或 sample.org 或 exexample.com。
编写一个函数 filter_by_domain(emails,domain),从电子邮件地址列表 emails 中过滤出属于特定域名 domain 的邮件地址,然后编写代码,接收输入的域名,调用上述函数,找出属于输入域名的邮件地址。
已知一个电子邮件的地址列表为 ["user1@example.com","user2@sample.org","admin@sample.org","admin@exexample.com","guest@example.com"],需要找出属于域名 domain 的邮件地址,domain 可以是 example.com 或 sample.org 或 exexample.com。
编写一个函数 filter_by_domain(emails,domain),从电子邮件地址列表 emails 中过滤出属于特定域名 domain 的邮件地址,然后编写代码,接收输入的域名,调用上述函数,找出属于输入域名的邮件地址。
📝 样例输入: 请输入域名:example.com
▶ 运行结果: ['user1@example.com','guest@example.com']
🧩 已给出的代码
python
mlist=["user1@example.com","user2@sample.org","admin@sample.org","admin@exexample.com","guest@example.com"]
# ***********Program***********
(考生在此处填写语句)
# ************End************▼
参考答案(填入 Program 与 End 之间)
python
def filter_by_domain(emails,domain):
return [e for e in emails if e.endswith('@'+domain)]
domain=input('请输入域名:')
result=filter_by_domain(mlist,domain)
print(result)💡 思路提示:注意:必须用 endswith('@'+domain) 判断是否属于该域名,直接用 in 会把 admin@exexample.com 误判为 example.com。