小熊奶糖(BearCandy)
小熊奶糖(BearCandy)
发布于 2024-05-11 / 15 阅读
0
0

Python 数据结构实例

实验一:编写一个程序,输入年龄后计算是否满足合法工作年龄,并输出相应的结果(童工、合法年龄或退休年龄)。

实验二:编写一个程序,对三个数从小到大排序并输出。

实验三:编写一个程序,计算小于1000的所有整数中能够同时被5和7整除的最大整数。

实验四:给定一个整数组成的列表,判断其升序、降序还是无序。

实验五:编写一个程序,从列表中去除重复项(不能直接用眼睛看,而应该使用程序判断是否存在重复)。

以下是针对这五个实验任务使用Python基础语法实现的解决方案,不使用自定义函数:

实验一:年龄合法性判断

age = int(input("请输入年龄:"))
if age < 16:
    print("童工")
elif 16 <= age < 60:
    print("合法年龄")
else:
    print("退休年龄")

实验二:三个数排序并输出

a = int(input("请输入第一个数:"))
b = int(input("请输入第二个数:"))
c = int(input("请输入第三个数:"))

min_val = min(a, b, c)
max_val = max(a, b, c)
mid_val = a + b + c - min_val - max_val

print(min_val, mid_val, max_val)

实验三:找出小于1000的能被5和7整除的最大整数

num = 995  # 从995开始向下遍历,因为1000不能被7整除
while num > 0:
    if num % 5 == 0 and num % 7 == 0:
        print("满足条件的最大整数是:", num)
        break
    num -= 1

实验四:判断列表的排序状态

lst = [int(x) for x in input("请输入一系列整数,以空格分隔:").split()]
is_asc = all(lst[i] <= lst[i+1] for i in range(len(lst)-1))
is_desc = all(lst[i] >= lst[i+1] for i in range(len(lst)-1))

if is_asc:
    print("升序")
elif is_desc:
    print("降序")
else:
    print("无序")

实验五:从列表中去重(不使用set等内置去重方法)

lst = list(map(int, input("请输入一系列整数,以空格分隔:").split()))
unique_lst = []

for num in lst:
    if num not in unique_lst:
        unique_lst.append(num)

print("去重后的列表:", " ".join(map(str, unique_lst)))

实验四其他解法

方法二:

#列表推导式,将输入的数字转换为整形存入lst
lst = [int(x) for x in input("请输入一系列整数,以空格分隔:").split()]

# 初始化标志位
is_ascending = True
is_descending = True

# 检查升序
for i in range(len(lst) - 1):
    if lst[i] > lst[i + 1]:
        is_ascending = False
        break

# 如果已经是升序,无需再检查降序(优化:实际上一旦确定非升序,就可判断是否为降序或无序)
if is_ascending:
    print("升序")
else:
    # 检查降序
    for i in range(len(lst) - 1):
        if lst[i] < lst[i + 1]:
            is_descending = False
            break
  
    if is_descending:
        print("降序")
    else:
        print("无序")

方法三:

L=[1,2,3,5,6,7,8,9]
#可能为无序所以要执行下面两步
l1=sorted(L,reserve=ture) #升序
l2=sorted(L,reserve=ture) #降序
if L==L1:
    print("升序")
elif L==ll:
    print("降序")
else:
    print("无序")

实验七:

  1. 在 names 列表里 black_girl 前面插入一个名字为 alex 的元素。
  2. 把 shanshan 这个名字改成中文的“姗姗”。
  3. 往 names 列表末尾的后面插入一个新列表 n=[oldboy, oldgirl]。
  4. 创建新列表 [1,2,3,4,5,6,2] 并将其合并到 names 列表。
  5. 取出 names 列表中索引 4-7 的元素。
  6. 取出 names 列表中索引 2-10 的元素,步长为 2。
  7. 取出 names 列表中最后三个元素。
  8. 循环 names 列表,打印每个元素及其索引值;当索引是偶数时,将对应的元素改为 -1。
# 假设初始的 names 列表如下
names = ['lisa', 'annie', 'black_girl', 'tina', 'tom', 'jerry']

# 1. 在 names 列表里 black_girl 前面插入一个名字为 alex 的元素。
names.insert(names.index('black_girl'), 'alex')

# 2. 把 shanshan 这个名字改成中文的“姗姗”。
if 'shanshan' in names:
    names[names.index('shanshan')] = '姗姗'

# 3. 往 names 列表末尾的后面插入一个新列表 n=[oldboy, oldgirl]。
names.extend(['oldboy', 'oldgirl'])

# 4. 创建新列表 [1,2,3,4,5,6,2] 并将其合并到 names 列表。
numbers = [1, 2, 3, 4, 5, 6, 2]
names.extend(numbers)

# 5. 取出 names 列表中索引 4-7 的元素。
subset_1 = names[4:8]  # 注意索引到7实际上是第8个元素,因为索引是从0开始的

# 6. 取出 names 列表中索引 2-10 的元素,步长为 2。
subset_2 = names[2:11:2]

# 7. 取出 names 列表中最后三个元素。
last_three = names[-3:]

# 8. 循环 names 列表,打印每个元素及其索引值;当索引是偶数时,将对应的元素改为 -1。
for index, value in enumerate(names):
    print(f"Index: {index}, Value: {value}")
    if index % 2 == 0:  # 索引从0开始,所以偶数索引实际上是奇数位置
        names[index] = -1

# 注意:第8步中的修改是在原列表上进行的,这会影响后续的使用。根据实际情况决定是否需要保留原列表的不变性。

实验七 第八步用到了迭代解构详见:Python迭代解构

还用到了列表推导式详见:列表推导式,数据结构等


评论