返回顶部
首页 > 资讯 > 后端开发 > Python >【头歌-Python】Python第六章作业(初级)
  • 456
分享到

【头歌-Python】Python第六章作业(初级)

python开发语言头歌 2023-10-18 17:10:05 456人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

第1关:列表的属性与方法 任务描述 初始化一个空列表,输入一个正整数 n。 接下来,你将被要求输入 n 个指令,每得到一个指令后,根据指令的字符串进行对应的功能操作。 指令形式及对应功能如下: ins

第1关:列表的属性与方法

任务描述

初始化一个空列表,输入一个正整数 n。
接下来,你将被要求输入 n 个指令,每得到一个指令后,根据指令的字符串进行对应的功能操作。
指令形式及对应功能如下:

insert i e: # 在第 i 个位置插入整数 e。print:      # 输出列表remove e:   # 删除第一次出现的整数 e .append e:   # 在列表的末尾插入整数 e.sort:       # 按默认规则排序.pop:        # 弹出列表最后一一个元素reverse:    # 列表元素逆序.

输入格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

第一行输入一个正整数 n‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

随后的 n 行,每行输入一个如示例格式的命令(或命令加1或2个整数,要求加入列表的必须是整数)

输出格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

每遇到“print”时,在新的一行输出列表

示例 1‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

  • 输入:
12insert 0 5insert 1 10insert 0 6printremove 6append 9append 1sortprintpopreverseprint
  • 输出:
[6, 5, 10][1, 5, 9, 10][9, 5, 1]

参考代码

l = []n = int(input())while n:    q = input().split(' ')    if q[0] == "insert":        l.insert(int(q[1]),int(q[2]))    elif q[0] == "remove":        l.remove(int(q[1]))    elif q[0] == "append":        l.append(int(q[1]))    elif q[0] == "sort":        l.sort()    elif q[0] == "pop":        l.pop()    elif q[0] == "reverse":        l.reverse()    elif q[0] == "print":        print(l)    n -= 1

第2关:推导式与生成器

相关知识

推导式可以从一个数据序列构建另一个新的数据序列的结构体。本质上可以将其理解成一种集合了变换和筛选功能的函数,通过这个函数把一个序列转换成另一个序列。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

共有三种推导式:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

  • 列表(list)推导式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
  • 字典(dict)推导式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
  • 集合(set)推导式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

列表推导式是一种创建新列表的便捷的方式,通常用于根据一个列表中的每个元素通过某种运算或筛选得到另外一系列新数据,创建一个新列表。 列表推导式由1个表达式跟一个或多个for 从句、0个或多个if从句构成。

# 列表推导式由1个表达式跟一个或多个for 从句、0个或多个if从句构成。# 列表推导式置于一对方括号之中[x**2 for x in range(10)]  #计算range(10)中每个数的平方,推导出新列表# 得到新列表[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

for前面是一个表达式,in 后面是一个列表或能生成列表的对象。将in后面列表中的每一个数据作为for前面表达式的参数,再将计算得到的序列转成列表。if是一个条件从句,可以根据条件返回新列表。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

for前面也可以是一个内置函数或自定义函数,例如:

# 自定义函数f(x)def fun(x):    return x + x ** 2 + x ** 3     # 返回 x + x ** 2 + x ** 3y = [fun(i) for i in range(10)]    # 列表推导式,按函数fun(x),推导出新列表print(y)                           # 输出列表[0, 3, 14, 39, 84, 155, 258, 399, 584, 819]

列表推导式还可以用条件语句(if从句)对数据进行过滤,用符合特定条件的数据推导出新列表,例如:

def fun(x):    return x + x**2 + x ** 3  # 返回x + x ** 2 + x ** 3# 列表推导式,根据原列表中的偶数,推导新列表y = [fun(i) for i in range(10) if i%2 is 0] print(y)         # 输出列表[0, 14, 84, 258, 584]

可以用多个for从句对多个变量进行计算,例如:

ls = [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]print(ls)      # 输出[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

列表推导式应用实例

ls = [-4, -2, 0, 2, 4]print([x*2 for x in ls])# 将原列表每个数字乘2,推导出新列表 [-8, -4, 0, 4, 8]print([x for x in ls if x >= 0])   # 过滤列表,返回只包含正数的列表[0, 2, 4]print([abs(x) for x in ls])        # 应用abs()函数推导新列表[4, 2, 0, 2, 4]# 调用strip()方法去除每个元素前后的空字符,返回['banana', 'apple', 'pear']freshfruit = ['  banana', '  apple ', 'pear  ']print([fruit.strip() for fruit in freshfruit]) ## 生成一个每个元素及其平方(number, square)构成的元组组成的列表print([(x, x**2) for x in range(6)]) # [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]

将列俩表推导式的[]改成()即可得到生成器

print([x ** 3 for x in range(10)])# 输出列表 [0, 1, 8, 27, 64, 125, 216, 343, 512, 729]print((x ** 3 for x in range(10)))# 输出生成器对象  at 0x000001FBC47185C8>print(list(x ** 3 for x in range(10)))# 生成器可遍历或转列表# [0, 1, 8, 27, 64, 125, 216, 343, 512, 729]

字典推导和列表推导的使用方法是类似的,只是中括号该改成大括号。

dic = {'李明': '20191202001', '张凡':'20191202002'} # 姓名:学号dic_update = {v: k for k, v in dic.items()}print(dic_update)# 输出交换了键和值的字典 {'20191202001': '李明', '20191202002': '张凡'}

集合推导式跟列表推导式也是类似的, 唯区别在于它使用大括号{}。

print({x ** 3 for x in range(10)})# 输出集合 {0, 1, 64, 512, 8, 343, 216, 729, 27, 125}

实验任务描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

现有一列表 ls = [‘the lord of the rings’,‘anaconda’,‘legally blonde’,‘Gone with the wind’],编写程序,实现以下功能:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

  1. 输入“1”,输出元素为0-9的3次方的列表‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

  2. 输入“2”,输出元素为0-9中偶数的3次方的列表‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

  3. 输入“3”,输出元素为元组的列表,元组中元素依次是0-9中的奇数和该数的3次方‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

  4. 输入“4”,将列表 ls 中每个元素首字母转为大写字母,输出新列表‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    str.capitalize()函数可以将字符串str的首字母转换为大写字母。

  5. 输入其他字符,输出“结束程序”‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬拓展实践‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

在自己电脑上编程,对生成器进行遍历输出,了解生成器成列表推导式的异同。

示例‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
输入:

1

输出:[0, 1, 8, 27, 64, 125, 216, 343, 512, 729]

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬参考代码

ls = ['the lord of the rings', 'anaconda', 'legally blonde', 'gone with the wind']s = input()if s == '1':   print([i ** 3 for i in range(10)])elif s == '2':   print([i ** 3 for i in range(10) if i%2 == 0])elif s == '3':   print([(odd, odd**3) for odd in range(10) if odd%2])elif s == '4':   print([i.capitalize() for i in ls])else:   print("结束程序")

第3关:列表的合并与排序

任务描述

读入两行,两行的格式一样,都是用空格分隔的若干个整数,将这些数合并到一个列表中,降序排列后输出整个列表。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

提示:

list1 = list(map(int,input().split()))#读入一行由空格分隔的整数,将其存入list1列表中

输入格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入为两行,两行格式一样,都是用空格分隔的若干个整数(整数个数可能为0个)。

输出格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输出为一行,是元素按数值降序排列后的整数列表。

示例 1‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

  • 输入:
1 5 9 -1 0234 6 9 2 34 0
  • 输出:
[234, 34, 9, 9, 6, 5, 2, 1, 0, 0, -1]

参考代码

l1 = list(map(int, input().split()))l2 = list(map(int, input().split()))l1.extend(l2)l1.sort(reverse=True)print(l1)

第4关:二维列表排序

任务描述

有以下两个二维列表。
第一个列表的元素是元组,请对其按列表元素的第 2 个元素值从小到大进行排序输出,输出其前 m 项;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
列表一:

[('dungeon',7),('winterfell',4),('bran',9),('meelo',6)]‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

第二个列表的元素仍是列表,请对其分别按每个元素的第 1 和第 3 个元素值从小到大进行排序,输出其前 n 项。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
列表二:

[[ 'Angle', '0121701100106',99], [ 'Jack', '0121701100107',86], [ 'Tom', '0121701100109',65], [ 'Smith', '0121701100111', 100], ['Bob', '0121701100115',77], ['Lily', '0121701100117', 59]]

m 和 n 是由用户输入的非负整数,当 m 或 n 大于列表长度时,对整个列表进行排序输出。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

在两行中分别输入正整数m 和 n

输出格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

列表一排序后的前 m 项‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
列表二按第 1 个元素值升序排序的前 n 项‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
列表二按第 3 个元素值升序排序的前 n 项

示例‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

  • 输入:
23
  • 输出:
[('winterfell', 4), ('meelo', 6)][['Angle', '0121701100106', 99], ['Bob', '0121701100115', 77], ['Jack', '0121701100107', 86]][['Lily', '0121701100117', 59], ['Tom', '0121701100109', 65], ['Bob', '0121701100115', 77]]

参考代码

l1 = [('dungeon',7),('winterfell',4),('bran',9),('meelo',6)]l2 =  [[ 'Angle', '0121701100106',99], [ 'Jack', '0121701100107',86], [ 'Tom', '0121701100109',65], [ 'Smith', '0121701100111', 100], ['Bob', '0121701100115',77], ['Lily', '0121701100117', 59]]m = int(input())n = int(input())print(sorted(l1, key=lambda x:x[1])[:m])print(sorted(l2, key=lambda x:x[0])[:n])print(sorted(l2, key=lambda x:x[2])[:n])

第5关:动物重量排序

任务描述

输入一系列动物名和其重量,重量单位可能是kg,也可能是t,动物名、与重量间空格分隔,重量数值与单位间无分隔。 按重量由小到大排序以二维列表形式输出。

输入格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

每次输入一个动物名,以及其重量和单位,动物名与重量间用空格分隔,直接输入回车时结束输入(此时输入的字符为空字符串)。

提示:判断输入是否为’'空字符串,为True则结束输入。

输出格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

以二维列表形式输出,按重量由小到大升序排序。

示例 1‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

  • 输入:
北极熊 0.75t企鹅 35kg海豹 0.35t海豚 228kg白鲸 1.35t
  • 输出:
[['企鹅', '35kg'], ['海豚', '228kg'], ['海豹', '0.35t'], ['北极熊', '0.75t'], ['白鲸', '1.35t']]

参考代码

def f(x):    if 'kg' in x[1]:        res = float(x[1][:-2])    if 't' in x[1]:        res = float(x[1][:-1])        res *= 1000    return resl = []while s :=input().split() :    l.append(s)print(sorted(l, key=f))

第6关:身份证号升位

任务描述

第二代居民身份证是依据2003年6月28日第十届全国人大常委会第3次会议通过的《中华人民共和国居民身份证法》实施的。第一代身份证十五位数升为第二代身份证十八位数的一般规则是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

第一步,在原十五位数身份证的第六位数后面插入19 (1905年1月1日以后出生)或20(2000.1.1-2004.12.31出生),这样身份证号码即为十七位数; 第二步,按照国家规定的统一公式计算出第十八位数,作为校验码放在第二代身份证的尾号。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

校验码计算方法:将身份证前十七位数分别乘以不同系数并求和

S = Sum(ai * Wi)

Ai:表示第i位置上的身份证号码数字值, i = 0, ... , 16
Wi:表示第i位置上的加权因子,
Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
S对11取模得到余数0-10,对应的校验码如下:
余数 Y: 0 1 2 3 4 5 6 7 8 9 10
校验码: 1 0 X 9 8 7 6 5 4 3 2‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

题目假设所有人均出生于1905年1月1日以后,2005年1月1日以前

输入格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入一个15位身份证号

输出格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输出一个18位身份证号

示例 1‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

  • 输入:310112850409522

  • 输出:310112198504095227

参考代码

old = input()year = int(old[6:8])yn = '19' if year>5 else '20'new = old[:6] + yn + old[6:]w = [7, 9, 10, 5 , 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]s = 0for i in range(len(new)):    s += int(new[i])*w[i]mod = s%11x = '10X98765432'print(new + x[mod])

第7关:完美立方数

任务描述

费马大定理断言,当整数 n > 2时,关于 a,b,c 的方程 an = b n + cn 没有正整数解。 该定理被提出来后,历经三百多年,经历多人猜想辩证,最终在 1995 年被英国数学家安德鲁.怀尔斯证明。
不过,可以找到大于 1 的 4 个整数满足完美立方等式:
a3 = b3 + c3 + d3
(例如 123 = 63 + 83 + 103)
编写一个程序,对于任意给定的正整数 N(N<=100),寻找所有的四元组(a,b,c,d),满足
a3 = b3 + c3 + d3 (其中 1 < a,b,c,d <=N)

输入格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

整数 N(1 < N <= 100)

输出格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

按照 a 的值从小到大,每行输出一个完美立方等式,其中b,c,d按照非降序排列输出。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

(若两个完美立方式中 a 值相同,则 b 值小的先输出;在 b 值相等的情况下,c 值小的先输出,在 b,c 都相等的情况下,d 值小的先输出。)

示例‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

  • 输入:
24
  • 输出:
Cube = 6,Triple = (3,4,5)Cube = 12,Triple = (6,8,10)Cube = 18,Triple = (2,12,16)Cube = 18,Triple = (9,12,15)Cube = 19,Triple = (3,10,18)Cube = 20,Triple = (7,14,17)Cube = 24,Triple = (12,16,20)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

参考代码

N = int(input())ls = [i**3 for i in range(1, N+1)]for a in range(6, N+1):    for b in range(2, a):        for c in range(b, a):            for d in range(c, a):                if a**3 == b**3 + c**3 + d**3:                    print("Cube = {},Triple = ({},{},{})".fORMat(a, b, c, d))

第8关:约瑟夫环问题

任务描述

据说著名历史学家 Josephus有过以下的故事:Josephus及他的朋友共41人围成一个圆圈,由第1个人开始报数,每数到3该人就必须出去,然后再由下一个人重新报数,直到圆圈上少于3人为止。Josephus 将朋友与自己安排在第16个与第31个位置,成为最后剩下的人。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

扩展这个问题,当人数为n,每次报数为k时,求解最后的K-1个剩下的人的位置

输入格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

在同一行内输入两个正整数n和k,要求k > = 2且n >= k

输出格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

以列表形式显示剩余的人的序号。
如果k<2或者nData Error!

示例 1‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

  • 输入:
41 3
  • 输出:
[16, 31]

参考代码

def josephus(n, k):    l = list(range(1, n+1))    index = 0    while l:        temp = l.pop(0)        index += 1        if index == k:            index = 0            continue        l.append(temp)        if len(l)==k-1:            print(sorted(l))            break n, k = map(int, input().split())if k<2 or n<k:    print("Data Error!")else:    josephus(n, k)

第9关:统计英文文件中的单词数

任务描述

open(name[, mode[, buffering]])函数可以打开诸如txt,csv等格式的文件。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

如下,定义了read_file()函数:

def read_file(file):    """接收文件名为参数,读取文件中的数据到字符串中,返回字符串"""    with open(file, 'r', encoding='utf-8') as text:  # 创建文件对象        txt =text.read()      # 读文件为字符串    return txt     # 返回字符串

read_file(file)可以读取名为file的文件内容,以字符串的形式返回txt,请继续编程统计字符串txt中单词的数量。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

提示:统计单词数量时,形如It’sLet'sdon't的缩写形式要按2个单词计数。另外为了处理方便,约定所有测试文件中没有's表示所有格的情况。

输入格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入为一行,是一个文本文件名,如example1.txt

输出格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输出为一行,是对名为example1.txt的文件内容进行单词数目统计后的结果, 输出共有m个单词,具体格式见示例。

示例‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

  • 输入:mySunshine.txt
  • 输出:共有7个单词

参考代码

def read_file(file):    """接收文件名为参数,读取文件中的数据到字符串中,返回这个字符串"""    with open(file, 'r', encoding='utf-8') as f:        return f.read()def Word_list(txt):    """接收字符串为参数,用空格替换字符串中所有标点符号,根据空格将字符串切分为列表    返回值为元素为单词的列表"""    for c in "!\"'#$%()*+,-.:;<=>?@[\\]^_{|}~/":        txt = txt.replace(c,' ')    return txt.split()def number_of_words(ls):    """接收一个以单词为元素的列表为参数,返回列表中单词数量,返回值为整型"""    return len(ls)if __name__ == '__main__':    filename = input()                          # 读入文件名    text = read_file('step10/'+filename)        # 读取'step10/'文件夹中用户输入的文件名得到文件内容,存入text    words_list = word_list(text)                # 处理text,得到单词的列表    words_counts = number_of_words(words_list)  #统计单词列表word_list里的单词数    print(f'共有{words_counts}个单词')

来源地址:https://blog.csdn.net/qq_45801887/article/details/131363953

--结束END--

本文标题: 【头歌-Python】Python第六章作业(初级)

本文链接: https://lsjlt.com/news/431595.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 【头歌-Python】Python第六章作业(初级)
    第1关:列表的属性与方法 任务描述 初始化一个空列表,输入一个正整数 n。 接下来,你将被要求输入 n 个指令,每得到一个指令后,根据指令的字符串进行对应的功能操作。 指令形式及对应功能如下: ins...
    99+
    2023-10-18
    python 开发语言 头歌
  • 头歌实践教学平台Python-Python第二章作业(初级)
    第1关:三角形周长及面积 任务描述 输入的三角形的三条边a、b、c 的长度,计算并依次输出三角形的周长和面积,结果严格保留2位小数。测试用例的数据保证三角形三边数据可以构成三角形。 三角形面积计算公式: ,其中s=(a+b+c)/2。 a...
    99+
    2023-09-22
    python 单元测试
  • Python第四章作业(初级)
    目录 第1关 无参无返回值函数 第2关 无参有返回值函数 第3关 有参有返回值函数 第4关 多参函数 第5关 任意数量参数 第6关 pow函数详解 第7关 fabs() 函数 第8关 汽车迷 第9关 编写函数输出自除数 第10关 二分法求平...
    99+
    2023-10-04
    python 开发语言
  • 学校头歌作业1_2四则运算(头歌作业[Python])
    在CSDN上补充前几期的内容 第1关:整数四则运算 """试编程实现分两行输入两个非零整数,并在4 行中按顺序输出两个数的加、减、乘、除的计算结果。要求输出与如下示例格式相同,符号前后各有一个空格。"...
    99+
    2023-10-01
    python 算法
  • 学校头歌作业3_1中国古代数学问题(头歌作业[Python])
    在CSDN上补充前几期的内容 第1关:鸡兔同笼 """在同一行内输入用空格分隔的两个整数,代表头和脚的数量,计算并输出笼中各有多少只鸡和兔,如无解则输出“Data Error!”,函数无返回值。输入:...
    99+
    2023-10-22
    python
  • 第一章 初识Python
    1.1 Python诞生至今 python的创始人为吉多·范罗苏姆(Guido van Rossum)荷兰人,1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。Pyth...
    99+
    2023-01-31
    Python
  • headfirst python第一章初
    headfirst python这本书非常不错,但是很多人没耐心读,出的速记卡,有用的尽管下载headfirst python第一章初识python速记卡.rar原书下载HeadfirstPython.pdf...
    99+
    2023-01-31
    headfirst python
  • 《Python基础教程》第六章--读书
    本章会介绍如何将语句组织成函数。还会详细介绍参数(parameter)和作用域(scope)的概念,以及递归的概念及其在程序中的用途。 懒惰即美德 斐波那契数列:任何一个数都是前两个数之和的数字序列。 创建函数 内建的callable函...
    99+
    2023-01-31
    第六章 基础教程 Python
  • python核心编程2 第六章 练习
    6-2. 字符串标识符.修改例 6-1 的 idcheck.py 脚本,使之可以检测长度为一的标识符,并且可以识别 Python 关键字,对后一个要求,你可以使用 keyword 模块(特别是 keyword.kelist)来辅助 1...
    99+
    2023-01-30
    第六章 核心 python
  • python 第一次作业
    1.使用turtle换一个五环 2.设计这样一个程序:输入一个数字 判断它是不是一个质数 使用turtle换一个五环: >>> import turtle          #导入模块 >>> turtle.width(10)      ...
    99+
    2023-09-28
    python 开发语言
  • 第十二章 Python文件操作
    12.1 open()open()函数作用是打开文件,返回一个文件对象。用法格式:open(name[, mode[, buffering[,encoding]]]) -> file objectname 文件名mode 模式,比如以...
    99+
    2023-01-31
    十二章 操作 文件
  • Python第一次作业练习
    题目分析:"""参考学校的相关规定。对于四分制,百分制中的90分及以上可视为绩点中的4分,80 分及以上为3分,70 分以上为2分,60 分以上为1分;五分制中的5分为四分制中的4分,4分为3分,3分为2分,2分为1分。要求: ...
    99+
    2023-09-21
    python 开发语言
  • Python 第一周编程作业
    一、  编程题 1、  结合turtle库使用手册,读懂下列代码,并在jupyter编译器中运行观察结果:   依次分析下代码: 第一行 通过保留字import引用了Python中用于绘制图形的turtle库,as是作为别名之用。 (使用...
    99+
    2023-01-30
    作业 第一周 Python
  • python作业-多级菜单
    练习python多级菜单的读功能,其实就是列表或者字典的iter 功能要求: 运行程序输出第一级菜单 选择一级菜单某项,输出二级菜单,同理输出三级菜单 菜单数据保存在文件中 让用户选择是否要退出 有返回上一级菜单的...
    99+
    2023-01-31
    作业 菜单 python
  • python第三次作业——叶耀宗
    作业1import random#引入随机数模块xing=["小白","小黄","小王","小陈","小绿"]print("学号\t\t\t姓名\t\tJava\tC语言\tPython\t平均成绩\t")listj=[]listc=[]...
    99+
    2023-01-31
    作业 python 叶耀宗
  • Python(140行):第一次作业_中
    项目需要简单总结有以下几点: 用户登录操作,命令行输入用户名和密码,判断是否有该账户; 登录状态下,可选择生成题目的数量或者切换年级; 根据用户对应的小学、初中、高中三个年级生成不同难度的算术题; 文件输出打印 根据以...
    99+
    2023-01-30
    作业 Python
  • 第3章 python 函数与文件操作
    函数    定义        1.基本结构        def func_name():            func_code        2.三种形式 无参:应用场景仅仅只是执行一些操作,比如与用户交互,打印 有参:需要根据外部...
    99+
    2023-01-31
    函数 操作 文件
  • python学习心得-第一天-作业
    python学习第一天作业作业1用户输入帐号密码进行登陆用户信息保存在文件内用户密码输入错误三次后锁定用户代码:#__author__ = 'leslie' #-*-coding:utf-8-*- # #1. 用户输入帐号密码进行登陆 #2...
    99+
    2023-01-31
    作业 学习心得 python
  • 【创作赢红包】Python第3章 流程控制
    这里写目录标题 【本章导读】真值测试比较运算成员运算for循环while循环项目实训1项目实训2项目实训3项目实训4:项目实训5:项目实训6:项目实训7:项目实训8项目实训9:项目实训10:项...
    99+
    2023-09-07
    python 开发语言
  • Python第三周作业--工资管理系统
    工资管理系统 Alex 100000 Rain 80000 Egon 50000 Yuan 30000 -----以上是info.txt文件----- 实现效果: 从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工资信息...
    99+
    2023-01-31
    作业 工资管理系统 第三周
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作