Python编程:期末测试题解析
需积分: 5 62 浏览量
更新于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
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载