# 题目重述
1. 将列表 `[-1, 2, 3, -8, 9, -10]` 中的数由小到大进行排序,然后将负数进行平方。
2. 计算 $1! + 2! + \dots + n!$。
3. 利用 for 循环求 1~100 中所有奇数的和以及偶数的和。
4. 编写程序,求列表 `s = [9, 7, 8, 3, 2, 1, 55, 6]` 中元素的个数、最大值、最小值、元素之和。
5. 创建键为 1~7、值为 `'Monday'` ~ `'Sunday'` 的字典,输出键列表、值列表、键值对列表。
6. Python 语句序列 `"d = {1: 'a', 2: 'b', 3: 'c'}; print(len(d))"` 的运行结果是?
A. 0 B. 1 C. 3 D. 6
7. 以下不能创建字典的 Python 语句是?
A. `dict1 = 0`
B. `dict2 = {1: 8}`
C. `dict3 = dict([2.4], [3.6])`
D. `dict4 = dict(([2.4], [3.6]))`
---
# 给出答案(答案为带注释的代码块)
```python
# 第1题:排序后将负数平方
lst = [-1, 2, 3, -8, 9, -10]
sorted_lst = sorted(lst) # 升序排序
result = [x**2 if x < 0 else x for x in sorted_lst] # 负数平方
print("排序后负数平方:", result)
# 第2题:计算 1! + 2! + ... + n!
import math
n = int(input("请输入n: "))
factorial_sum = sum(math.factorial(i) for i in range(1, n+1))
print(f"1!+2!+...+{n}! =", factorial_sum)
# 第3题:for循环求1~100奇数和与偶数和
odd_sum = 0
even_sum = 0
for i in range(1, 101):
if i % 2 == 0:
even_sum += i
else:
odd_sum += i
print("奇数和:", odd_sum)
print("偶数和:", even_sum)
# 第4题:列表统计
s = [9, 7, 8, 3, 2, 1, 55, 6]
count = len(s)
max_val = max(s)
min_val = min(s)
sum_val = sum(s)
print(f"个数:{count}, 最大值:{max_val}, 最小值:{min_val}, 总和:{sum_val}")
# 第5题:创建星期字典并输出键、值、键值对
week_dict = {
1: 'Monday', 2: 'Tuesday', 3: 'Wednesday',
4: 'Thursday', 5: 'Friday', 6: 'Saturday', 7: 'Sunday'
}
print("键列表:", list(week_dict.keys()))
print("值列表:", list(week_dict.values()))
print("键值对列表:", list(week_dict.items()))
# 第6题:字典长度测试
d = {1: 'a', 2: 'b', 3: 'c'}
print("len(d) =", len(d)) # 输出: 3 → 正确答案 C
# 第7题:哪些语句不能创建字典
# A 错误:只是赋值整数
dict1 = 0 # 不是字典
# B 正确:标准字典
dict2 = {1: 8}
# C 错误:语法错误,无法解包
# dict3 = dict([2.4], [3.6]) # 会报错
# D 错误:仍然格式不对
# dict4 = dict(([2.4], [3.6])) # 同样报错
# 所以不能创建字典的是 A 和 C
```
---
# 代码解析
- **第1题**:先用 `sorted()` 排序,再通过列表推导式判断是否为负数,若是则平方。
- **第2题**:使用 `math.factorial()` 计算阶乘,配合生成器表达式求和。
- **第3题**:`for` 循环遍历 1~100,用 `%` 判断奇偶性分别累加。
- **第4题**:直接调用内置函数 `len`, `max`, `min`, `sum` 处理列表。
- **第5题**:手动构建字典,使用 `.keys()`, `.values()`, `.items()` 获取对应视图并转为列表。
- **第6题**:`len(dict)` 返回键值对数量,此处为 3。
- **第7题**:`dict()` 构造器必须接收可迭代的键值对(如 `[ (k,v), ... ]`),C 和 D 语法非法,A 根本不是字典。
---
# 知识点
1. **列表推导式与条件表达式**:`[x**2 if x<0 else x for x in lst]` 实现条件变换。
2. **字典创建与属性访问**:`{}` 定义字典,`.keys()`, `.values()`, `.items()` 获取结构信息。
3. **内置函数与数学运算**:`len`, `max`, `min`, `sum`, `range`, `math.factorial` 是常用基础工具。