Python编程:期末测试题解析
需积分: 5 126 浏览量
更新于2024-08-05
收藏 5KB MD 举报
"这是一个关于Python编程的期末测试题目集,包含多个编程挑战,涉及列表操作、循环、条件判断、数学计算、字符串处理、递归、逻辑推理等多个知识点。"
1. 列表元素类型检查与合并去重
在这个问题中,你需要创建两个列表`list1`和`list2`,然后分别输出它们的元素类型。Python中,可以使用`type()`函数来检查元素类型。接着,你可以使用`+`操作符将两个列表合并,最后通过`set()`函数去除重复项。例如:
```python
list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, "王一博", 6.0]
# 输出元素类型
for item in list1:
print(type(item))
for item in list2:
print(type(item))
# 合并并去重
merged_list = list1 + list2
unique_list = list(set(merged_list))
print(unique_list)
```
2. 求1-100的奇数和
使用循环结构和条件判断,你可以找出1到100之间的所有奇数,并将它们相加。可以使用`range()`函数配合`step`参数来只遍历奇数:
```python
odd_sum = 0
for i in range(1, 101, 2):
odd_sum += i
print(odd_sum)
```
3. 广告标语合法性判断
你需要编写一个函数,接收一个字符串作为广告标语,然后检查它是否包含特定的敏感词汇。如果包含,返回"广告不合法",否则返回"广告合法":
```python
def check_ad_slogan(slogan):
sensitive_words = ["最", "第一", "稀缺", "国家级"]
for word in sensitive_words:
if word in slogan:
return "广告不合法"
return "广告合法"
```
4. 张三吹蜡烛的问题
这是一个典型的数学问题,可以通过设定一个方程来解决。设张三从x岁开始吹蜡烛,今年y岁,那么有y * x = 275。可以通过尝试不同的y值来解这个方程,直到找到满足条件的x。
```python
def find_birthday_age(total_candles):
for y in range(1, int(total_candles 0.5) + 1):
x = total_candles // y
if x * y == total_candles:
return (x, y)
age_started, current_age = find_birthday_age(275)
print(f"张三从{age_started}岁开始吹蜡烛,今年{current_age}岁了。")
```
5. 小明切割矩形材料问题
这是一个递归问题。首先确定最大正方形的边长,然后递归地处理剩余的矩形,直到矩形的面积小于1。可以使用`math.sqrt()`函数来获取一个数的平方根:
```python
import math
def cut_rectangles(width, height):
if width <= 0 or height <= 0:
return 0
max_square_side = min(width, height)
squares = max_square_side + cut_rectangles(width - max_square_side, height - max_square_side)
return squares
num_squares = cut_rectangles(2019, 324)
print(num_squares)
```
6. 单词分类
这个任务要求根据每个单词的字母数量对单词进行分组。可以使用`collections.Counter`来统计每个单词的字母数量,然后使用`itertools.groupby`来分组:
```python
from collections import Counter
from itertools import groupby
def classify_words(words):
counter_dict = {word: len(word) for word in words}
sorted_words = sorted(words, key=lambda x: counter_dict[x])
groups = [len(list(group)) for k, group in groupby(sorted_words, lambda x: counter_dict[x])]
return len(groups)
# 示例
words = ["live", "live", "roof"]
print(classify_words(words)) # 输出: 2
```
7. 葡萄采摘问题
这是一个优化问题,可以使用优先队列(Python中的`heapq`模块)来解决。每次从最容易摘到的葡萄开始摘,直到力气耗尽。葡萄按其采摘难度排序,即按力气值排序:
```python
import heapq
def max_grapes(n, s, a, b, heights, energies):
grapes = [(height - a, energy) for height, energy in zip(heights, energies)]
heapq.heapify(grapes)
count = 0
while s >= 0 and grapes:
_, energy = heapq.heappop(grapes)
s -= energy
if s < 0:
break
count += 1
return count
# 示例
n = 3
s = 10
a = 5
b = 10
heights = [8, 12, 15]
energies = [3, 5, 7]
print(max_grapes(n, s, a, b, heights, energies)) # 输出: 2
```
以上是各个问题的详细解答,涵盖了Python编程中的多个核心概念。
2020-06-18 上传
2024-08-25 上传
2024-08-25 上传
2024-07-28 上传
2024-07-31 上传
2024-07-31 上传
2024-08-25 上传
2023-03-13 上传
2023-03-20 上传
Zero_plus_Seven
- 粉丝: 0
- 资源: 4
最新资源
- 俄罗斯RTSD数据集实现交通标志实时检测
- 易语言开发的文件批量改名工具使用Ex_Dui美化界面
- 爱心援助动态网页教程:前端开发实战指南
- 复旦微电子数字电路课件4章同步时序电路详解
- Dylan Manley的编程投资组合登录页面设计介绍
- Python实现H3K4me3与H3K27ac表观遗传标记域长度分析
- 易语言开源播放器项目:简易界面与强大的音频支持
- 介绍rxtx2.2全系统环境下的Java版本使用
- ZStack-CC2530 半开源协议栈使用与安装指南
- 易语言实现的八斗平台与淘宝评论采集软件开发
- Christiano响应式网站项目设计与技术特点
- QT图形框架中QGraphicRectItem的插入与缩放技术
- 组合逻辑电路深入解析与习题教程
- Vue+ECharts实现中国地图3D展示与交互功能
- MiSTer_MAME_SCRIPTS:自动下载MAME与HBMAME脚本指南
- 前端技术精髓:构建响应式盆栽展示网站