Python基础学习笔记:第三、四周作业汇总


Python基础学习笔记:第三、四周作业汇总

最近完成了Python学习第三周和第四周的编程练习,内容覆盖了字符串处理、多种数据结构、常用内置函数以及多项式解析等。
在这篇博文中,我将把作业中的典型题目整理出来,配上代码和注释,方便日后回顾,也希望能帮到同样在学Python的小伙伴。


一、字符串基础操作

字符串是Python中最常用的数据类型之一,下面几个练习涵盖了拼接、长度计算、大小写转换、去除空格、重复输出、切片等基本操作。

1. 字符串拼接

s = input()
s2 = input()
print(s + s2)

2. 字符串长度

s = input()
print(len(s))

3. 大小写转换

s = input()
print(s.lower())
print(s.upper())
print(s.title())

4. 去除首尾空格

s = input()
print(s.strip())

5. 重复输出

s = input()
print(s * 100)

6. 切片取前10个字符

s = input()
print(s[0:10])

二、元组与列表

元组是不可变序列,列表是可变序列,两者在实际开发中都非常常用。

1. 元组创建与不可变性

# 创建元组并尝试修改(会触发异常)
s = ('Niuniu', 'Niumei')
print(s)
try:
    s[1] = 'Niukele'
except TypeError:
    print('The entry form cannot be modified!')

2. 元组切片

x = tuple(input().split())
x = x[0:3]
print(x)

3. 成员判断

y = tuple(['Tom', 'Tony', 'Allen', 'Cydin', 'Lucy', 'Anna'])
print(y)
a = input()
if a in y:
    print('Congratulations!')
else:
    print('What a pity!')

4. 元组合并与长度

y = tuple(range(1, 6))
print(y)
print(len(y))

x = tuple(range(6, 11))
x = y + x
print(x)
print(len(x))

5. 列表推导与最大值最小值

x = list(input().split())
y = [int(i) for i in x]
print(max(y))
print(min(y))

6. 列表求和

a = list(map(int, input().split()))
print(sum(a))

三、字典的创建与遍历

字典是以键值对形式存储数据的重要结构,在作业中涉及了字典的增删改查以及遍历。

1. 字典的基本操作与遍历

d = {'<': 'less than', '==': 'equal'}
print('Here is the original dict:')
for i in sorted(d):
    print("Operator " + i + " means " + d[i] + ".")

d['>'] = 'greater than'
print("\nThe dict was changed to:")
for i in sorted(d):
    print("Operator " + i + " means " + d[i] + ".")

2. 字典成员判断

d = {'Niumei': 'Nowcoder', 'GURR': 'HUAWEI'}
ls = ['Niumei', 'Niu Ke Le', 'GURR', 'LOLO']
for i in ls:
    if i in d.keys():
        print(f"Hi, {i}! Thank you for participating in our graduation survey!")
    else:
        print(f"Hi, {i}! Could you take part in our graduation survey?")

3. 字典列表与取值

d1 = {'name': 'Niuniu', 'Student ID': 1}
d2 = {'name': 'Niumei', 'Student ID': 2}
d3 = {'name': 'Niu Ke Le', 'Student ID': 3}
d_list = [d1, d2, d3]
for item in d_list:
    print(f"{item['name']}'s student id is {item['Student ID']}.")

4. 嵌套字典

d = {
    'Beijing': {'Capital': 'China'},
    'Moscow': {'Capital': 'Russia'},
    'Paris': {'Capital': 'France'}
}
for city in sorted(d):
    print(f"{city} is the capital of {d[city]['Capital']}!")

5. 字典的值列表遍历

d = {'Allen': ['red', 'blue', 'yellow'], 'Tom': ['green', 'white', 'blue'], 'Andy': ['black', 'pink']}
for name in sorted(d):
    print(f"{name}'s favorite colors are:")
    for color in d[name]:
        print(color)

6. 通过zip创建字典

keys = input().split()
values = input().split()
d = dict(zip(keys, values))
print(d)

7. 字符出现次数统计

chars = list(input())
count_dict = {}
for ch in chars:
    count_dict[ch] = chars.count(ch)
print(count_dict)

四、数学计算与内置函数

Python提供了丰富的内置函数,可以便捷地完成数学计算。

1. 绝对值、进制转换、幂运算

# 绝对值
a = int(input())
print(abs(a))

# 字符转ASCII码
print(ord(input()))

# 十进制转十六进制
print(hex(int(input())))

# 十进制转二进制
print(bin(int(input())))

# 幂运算
x, y = map(int, input().split())
print(pow(x, y))
print(pow(y, x))

2. 列表元素统计与查找

# 统计0的个数
a = list(map(int, input().split()))
print(a.count(0))

# 查找元素索引
a = input().split()
print(a.index('NiuNiu'))

3. 字符串内容判断

a = input()
print(a.isalpha())
print(a.isdigit())
print(a.isspace())

4. 字符串查找与计数

# 查找子串
a = input()
s = 'NiuNiu'
print(a.index(s) if s in a else -1)

# 统计子串出现次数
p = input()
print(p.count('Niu'))

5. 保留小数与表达式求值

# 四舍五入保留两位小数
a = float(input())
print(round(a, 2))

# 计算表达式
print(eval(input()))

五、多项式解析与计算

在第四周的作业中,出现了多项式解析和计算的题目,这是对字符串处理与字典应用的深入练习。

1. 解析多项式字符串

def parse_poly(s):
    """
    将形如 +1x^2-2x^1+3x^0 的字符串解析为字典 {指数: 系数}
    """
    poly_dict = {}
    i = 0
    n = len(s)
    while i < n:
        # 确定符号
        if s[i] == '+':
            sign = 1
            i += 1
        elif s[i] == '-':
            sign = -1
            i += 1
        else:
            sign = 1  # 默认为正

        # 读取系数(一位数字)
        coeff = int(s[i])
        i += 1
        # 跳过 'x^'
        i += 2
        # 读取指数(一位数字)
        exp = int(s[i])
        i += 1
        poly_dict[exp] = sign * coeff
    return poly_dict

2. 多项式求值

def eval_poly(poly_dict, x):
    result = 0
    for exp, coeff in poly_dict.items():
        result += coeff * (x ** exp)
    print(result)

3. 特殊多项式(稀疏表示)

# 多项式: -0.5 + 2*x^100
poly_list = [-0.5] + [0] * 99 + [2]
poly_dict = {0: -0.5, 100: 2}

def eval_poly_dict(poly_dict, x):
    return poly_dict[0] + poly_dict[100] * (x ** 100)

def eval_poly_list(poly_list, x):
    return poly_list[0] + poly_list[100] * (x ** 100)

六、其他练习

1. 三角形面积计算(已知顶点坐标)

vertices = eval(input().strip())
x1, y1 = vertices[1]
x2, y2 = vertices[2]
x3, y3 = vertices[3]
area = 0.5 * abs((x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1))
print(area)

2. 级数求和(π/4 的近似)

N = int(input())
s = 0.0
for i in range(1, N + 1):
    term = 1.0 / (2 * i - 1)
    if i % 2 == 0:
        term = -term
    s += term
pi = 4 * s
print(f"{pi:.8f}")

总结

这两周的作业让我熟悉了Python中字符串、列表、元组、字典的基本操作,也练习了内置函数的使用和简单的算法实现。特别是字典的灵活运用和多项式的解析,让我对数据结构在实际问题中的应用有了更深的理解。



深入探索C++移动构造:从实验看std::move与拷贝降级的真相

江苏省2025年高校专项计划部分高校分数线与报考分析

评 论