【python】习题 第9周

  • 22秋季Python第9周作业
    • 函数题
      • 6-1 完数统计
      • 6-2 偶数是两个素数的和
      • 6-3 浮点数的十进制转二进制
      • 6-4 实现象棋中相的走法
      • 6-5 富翁与骗子 - 实验12 用函数实现模块化程序设计 - 《Python编程基础及应用实验教程》,高教社
    • 编程题
      • 7-1 互质数
      • 7-2 三七二十一
      • 7-3 学生成绩分析
      • 7-4 多个数的最小公倍数
      • 7-5 统计函数
      • 7-6 数字螺旋方阵
      • 7-7 进制转换
      • 7-8 母牛问题
      • 7-9 筛选法求素数
      • 7-10 公共子串查找---实验4

22秋季Python第9周作业

函数题

6-1 完数统计

完数定义:一个数的所有因子(包括1)之和等于它自身,这个数就是完数。比如6=1+2+3,6是完数。
本题要求编写程序,计算所有N位完数的个数与列表显示。

函数接口定义:

def wan(n):

在这里解释接口参数。n是一个大于0的正整数。表示几位数。

裁判测试程序样例:

import math/* 请在这里填写答案 */n=int(input())
x,lst=wan(n)
print(x)
print(lst)

输入样例:
在这里给出一组输入。例如:

2

输出样例:
在这里给出相应的输出。例如:

1
[28]

代码:

def wan(n):arr = []count = 0for x in range(int(math.pow(10, n - 1)), int(math.pow(10, n))):sum = 1for i in range(2, x):if x % i == 0:sum += iif sum == x:arr.append(sum)count += 1return count, arr

6-2 偶数是两个素数的和

编写函数,接收一个正偶数为参数,输出两个素数,并且这两个素数之和等于原来的正偶数。如果存在多组符合条件的素数,则全部输出。

函数接口定义:
在这里描述函数接口。例如:

def  evenprimesum( n ):

在这里解释接口参数。n 为传递的整数,不一它是偶数,也不一定是大于0的数据。函数将所有是偶数的素数输出,输出格式为:素数 + 素数 = 偶数,数据之间分隔符为一个空格

裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:

/* 请在这里填写答案 */n = int(input())
evenprimesum(n)

输入样例:
在这里给出一组输入。例如:

100

输出样例:
在这里给出相应的输出。例如:

3 + 97 = 100
11 + 89 = 100
17 + 83 = 100
29 + 71 = 100
41 + 59 = 100
47 + 53 = 100

代码:

def Prime(n):flag = Truefor i in range(2, n):if n % i == 0:flag = Falsebreakreturn flagdef evenprimesum(n):if n % 2 == 0 and n > 0:for i in range(3, n // 2 + 1):if Prime(i) and Prime(n - i):print(i, '+', n - i, '=', n)

6-3 浮点数的十进制转二进制


函数接口定义:

def dec2bin(dec_num):

其中 dec_num 是用户传入的十进制浮点数,返回对应的二进制浮点数字符串。

裁判测试程序样例:

/* 你的代码将被嵌在这里 */if __name__ == '__main__':dec_num = eval(input())bin_num = dec2bin(dec_num)print(bin_num)

输入样例:
在这里给出一组输入。例如:

0.1

输出样例:
在这里给出相应的输出。例如:

0b0.0001100110011001100110011001100110011001100110011001101

代码:

def dec2bin(dec_num):res = ""integer = int(dec_num)res += bin(integer)if integer == dec_num:return resdecimal = dec_num - integerres += "."while(True):if decimal == 0:breakelse:x = decimal * 2res += str(int(x))decimal = x - int(x)return res

6-4 实现象棋中相的走法


函数接口定义:

def moves_elephant(pos):

pos是一个二元元组,为红相或黑象的位置

裁判测试程序样例:

# 返回棋子元组,比如("黑","炮");如为空返回(0,"空")
def getPiece(pos):return board[pos] # 返回元组# 返回棋子的颜色
def getColor(piece):return piece[0]def moves_empty_board_elephant(pos):return [(pos[0] - 2, pos[1] - 2), (pos[0] - 2, pos[1] + 2), (pos[0] + 2, pos[1] - 2), (pos[0] + 2, pos[1] + 2)]# 返回象的合法位置列表
def moves_elephant(pos):# 请添加你的函数代码def main():global boardboard =  {(0,0):(0,"空"), (0,1):(0,"空"), (0,2):(0,"空"), (0,3):(0,"空"), (0,4):("红","卒"), (0,5):(0,"空"), (0,6):(0,"空"), (0,7):(0,"空"), (0,8):(0,"空"), (0,9):("红","炮"),(1,0):(0,"空"), (1,1):(0,"空"), (1,2):(0,"空"), (1,3):(0,"空"), (1,4):(0,"空"), (1,5):(0,"空"), (1,6):(0,"空"), (1,7):(0,"空"), (1,8):("红","马"), (1,9):("红","马"),(2,0):(0,"空"), (2,1):(0,"空"), (2,2):(0,"空"), (2,3):(0,"空"), (2,4):(0,"空"), (2,5):(0,"空"), (2,6):(0,"空"), (2,7):(0,"空"), (2,8):(0,"空"), (2,9):(0,"空"),(3,0):(0,"空"), (3,1):(0,"空"), (3,2):(0,"空"), (3,3):(0,"空"), (3,4):(0,"空"), (3,5):(0,"空"), (3,6):(0,"空"), (3,7):("黑","士"), (3,8):(0,"空"), (3,9):("黑","炮"),(4,0):("红","将"), (4,1):("红","士"), (4,2):("红","象"), (4,3):(0,"空"), (4,4):(0,"空"), (4,5):("黑","车"), (4,6):(0,"空"), (4,7):("黑","象"), (4,8):("黑","士"), (4,9):("黑","将"),(5,0):("红","士"), (5,1):(0,"空"), (5,2):(0,"空"), (5,3):(0,"空"), (5,4):(0,"空"), (5,5):(0,"空"), (5,6):(0,"空"), (5,7):(0,"空"), (5,8):(0,"空"), (5,9):(0,"空"),(6,0):("红","象"), (6,1):(0,"空"), (6,2):(0,"空"), (6,3):(0,"空"), (6,4):("红","卒"), (6,5):(0,"空"), (6,6):(0,"空"), (6,7):(0,"空"), (6,8):(0,"空"), (6,9):("黑","象"), (7,0):(0,"空"), (7,1):(0,"空"), (7,2):(0,"空"), (7,3):(0,"空"), (7,4):(0,"空"), (7,5):(0,"空"), (7,6):(0,"空"), (7,7):(0,"空"), (7,8):(0,"空"), (7,9):(0,"空"),(8,0):(0,"空"), (8,1):(0,"空"), (8,2):(0,"空"), (8,3):(0,"空"), (8,4):("红","卒"), (8,5):(0,"空"), (8,6):(0,"空"), (8,7):(0,"空"), (8,8):(0,"空"), (8,9):(0,"空"),}print(*moves_elephant((4,2)))if __name__ == '__main__':main()

输入样例:
无输入


输出样例:

(2, 0) (2, 4)

代码:

# 返回象的合法位置列表
def moves_elephant(pos):# 请添加你的函数代码# print(getColor(pos))# print(pos[0], pos[1])# print(getPiece((pos[0] - 2, pos[1] - 2)))lis = []result = getPiece((pos[0] - 2, pos[1] - 2))# print(result[0])# print(result[1])if result[1] == "空":lis.append((pos[0] - 2, pos[1] - 2))result = getPiece((pos[0] - 2, pos[1] + 2))if result[1] == "空":lis.append((pos[0] - 2, pos[1] + 2))result = getPiece((pos[0] + 2, pos[1] - 2))if result[1] == "空":lis.append((pos[0] + 2, pos[1] - 2))result = getPiece((pos[0] + 2, pos[1] + 2))if result[1] == "空":lis.append((pos[0] + 2, pos[1] + 2))return lis

6-5 富翁与骗子 - 实验12 用函数实现模块化程序设计 - 《Python编程基础及应用实验教程》,高教社

在一次酒会上,富翁A遇到了骗子B。骗子对富翁说:“我成立了一个互助基金会,您可以将短期不用的资金存到我这里来,存期30天。第一天您只需要存入1分钱,第二天存入两分钱,依次类推,以后每天存入的钱是前一天的两倍,直到30天期满(含30天)。从您存入钱的第一天开始,您每天可以支取30万元,一直到30天期满(含30天)。”富翁觉得有利可图,欣然同意,两人签订了协议,约定按照上述要求存入资金,并且每天按照最大额度提取资金,合约结束后两人就互不相欠。

请完善下述程序,从键盘读入合约天数以及单日取款金额,计算并输出富翁的盈亏金额。

函数接口定义:

def deposit(n)def withdraw(n,amount)
  • 函数deposit(n)用于求n天的存钱总额;
  • 函数withdraw(n,amount)用于求n天的提款总额,其中,参数amount为每日提款额。

注意:仅需提交两个函数的定义代码,不要提交完整程序。

裁判测试程序样例:

#请将两个函数定义在此处days,amount=eval(input())
diff=deposit(days)-withdraw(days,amount)
if diff>0:print("富翁亏损: {:.2f}".format(diff))
else:print("富翁赢利: {:.2f}".format(0-diff))

输入样例:
在这里给出一组输入。例如:

30,300000

输出样例:
在这里给出相应的输出。例如:

富翁亏损: 1737418.23

代码:

def deposit(n):x = 0.01count = 0.0for i in range(0, n):count += xx = x * 2return countdef withdraw(n, amount):return n * amount

编程题

7-1 互质数


输入样例:

1
3
3 11
5 11
10 12

输出样例:

2

代码:

import matht = int(input())
while t > 0:count = 0n = int(input())for i in range(0, n):a, b = map(int, input().split())if math.gcd(a, b) == 1:count += 1print(count)t -= 1

7-2 三七二十一


输入样例:

2
1 7
1 100

输出样例:

none
8 29 50 71 92

代码:

t = int(input())
while t > 0:a, b = map(int, input().split())yes = 0for n in range(a, b + 1):if n % 3 == 2 and n % 7 == 1 and yes == 0:yes = 1print(n, end="")elif n % 3 == 2 and n % 7 == 1 and yes != 0:print(" {}".format(n), end="")if yes == 0:print("none")else:print()t -= 1

7-3 学生成绩分析


输入样例:

66 78 95 63 85 94 99

输出样例:

[(85, 2.1), (78, 4.9), (94, 11.1), (95, 12.1), (99, 16.1), (66, 16.9), (63, 19.9)]

代码:

grades = list(map(str, input().split()))
num = []
for x in grades:num.append(eval(x))
avg = sum(num) / len(num)lis = []
for i in range(len(num)):lis.append((num[i], round(abs(avg - num[i]), 1)))
print(sorted(lis, key=lambda n: n[1]))

7-4 多个数的最小公倍数


输入样例:

4
3 5 7 15
5 1 2 4 3 5
8 7 15 12 3 4 6 4 9
2 45000 50000

输出样例:

105
60
1260
450000

代码:

import math# math.lcm(a, b)
t = int(input())
for i in range(0, t):grades = list(map(int, input().split()))# grades = sorted(grade, reverse=True)# print(grades)x = grades[1]for j in range(2, len(grades)):x = math.lcm(x, grades[j])print(x)

7-5 统计函数


输入样例:
在这里给出一组输入。例如:

1234helll00++++----BBBBB

输出样例:
在这里给出相应的输出。例如:

(5, 5, 6, 8)

代码:

def count_test(st):cap, small, num, other = 0, 0, 0, 0for i in st:if i.isupper():cap = cap + 1elif i.islower():small = small + 1elif i.isdigit():num = num + 1else:other = other + 1print("(%d, %d, %d, %d)" % (cap, small, num, other))string = input()
count_test(string)

7-6 数字螺旋方阵


输入样例:

2
5
6

输出样例:

  25  24  23  22  2110   9   8   7  2011   2   1   6  1912   3   4   5  1813  14  15  16  1736  35  34  33  32  3117  16  15  14  13  3018   5   4   3  12  2919   6   1   2  11  2820   7   8   9  10  2721  22  23  24  25  26

代码:

def lis(n):  # 创建初始数组arr = [[0] * n for i in range(n)]return arrdef dfs(arr, x, y, num, n):  # 我的思路是和棋盘问题一样,用dfs因为有多种走向问题,但是不完全一样if n <= 0: return 0if n == 1:arr[x][y] = numreturn 0for i in range(n):  # 向右arr[x][y + i] = numnum -= 1for i in range(n - 1):  # 向下arr[x + 1 + i][y + n - 1] = numnum -= 1for i in range(n - 1):  # 向左arr[x + n - 1][y + n - 2 - i] = numnum -= 1for i in range(n - 2):  # 向上arr[x + n - 2 - i][y] = numnum -= 1dfs(arr, x + 1, y + 1, num, n - 2)x = int(input())
for i in range(x):n = int(input())arr = lis(n)a = dfs(arr, 0, 0, n * n, n)# 格式化输出printl = '%4d' * nfor tmp in arr:print(l % tuple(tmp))

7-7 进制转换


输入样例:

4
5 3
123 16
0 5
-12 2

输出样例:

5 12
123 7B
0 0
-12 -1100

代码:

def f(n, x):a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F']b = []k=0if n<0:k=1n=-nwhile True:s = n // xy = n % xb = b + [y]if s == 0: breakn = sif k == 1:print("-", end="")for i in b[::-1]:print(a[i], end='')t = int(input())
for i in range(0, t):x, y = map(int, input().split())print("%d " % x, end='')f(x, y)print()

7-8 母牛问题

  • 注意有多组数据

输入样例:

5
8
15

输出样例:

3
9
129

代码:

def f(n):if n < 4:return 1;else:return f(n - 1) + f(n - 3)while True:try:n = int(input())print(f(n))except:break

7-9 筛选法求素数

  • 注意有多组数据

输入样例:

19

输出样例:

2 3 5 7 11 13 17 19

代码:

def Prime(n):flag = Truefor i in range(2, n):if n % i == 0:flag = Falsebreakreturn flag
while True:try:n = int(input())k = 0for i in range(2, n+1):if Prime(i):if k == 0:print(i, end='')k = 1else:print(" %d" % i, end="")print()except:break

7-10 公共子串查找—实验4

输入样例:
在这里给出一组输入。例如:

Hefei Normal University
Anhui Hefei

输出样例:
在这里给出相应的输出。例如:

Hefei

代码:

a=input()
b=input()
f=[[0 for j in range(len(b))] for i in range(len(a))] # 构造二维数组f
for i in range(len(a)):for j in range(len(b)):if a[i]!=b[j]:f[i][j]=0else:f[i][j]=f[i-1][j-1]+1
# 维护了f[i][j] 要去找最长的长度
len_max=0
ans=""
for i in range(len(a)):for j in range(len(b)):if f[i][j]>len_max:ans=""len_max=f[i][j]for k in range(i-len_max+1,i+1):ans=ans+a[k]
print(ans)

【python】习题第9周相关推荐

  1. Python语言程序设计 第一周习题

    Python语言程序设计 第一周习题 习题1 获得用户输入的一个整数,参考该整数值,打印输出"Hello World",要求:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮ ...

  2. Python.习题五 列表与元组(下)

    Python.<习题五> 列表与元组 11.假设列表lst_info=[["李玉","男",25],["金忠","男& ...

  3. 近找到了一个免费的python教程,两周学会了python开发【内附学习视频】

    原文作者:佛山小程序员 原文链接:https://blog.csdn.net/weixin_44192923/article/details/86515984 最近找到了一个免费的python教程,两 ...

  4. 最近找到了一个免费的python教程,两周学会了python开发

    最近找到了一个免费的python教程,两周学会了python开发 最近找到了一个免费的python教程,两周学会了python开发.推荐给大家,希望召集更多的朋友一起学习python. 最近开始整理p ...

  5. 【Python习题】计算弓形的面积(保姆级图文+实现代码)

    目录 题目 实现思路 实现代码 总结 主要内容是校设课程的习题和课外学习的一些习题. 欢迎关注 『Python习题』 系列,持续更新中 欢迎关注 『Python习题』 系列,持续更新中 题目 题目 如 ...

  6. 百分制成绩转换五分制F【Python习题】(保姆级图文+实现代码)

    目录 题目 描述 输入格式 输出格式 输入输出示例 思路 代码 实现效果 总结 主要内容是校设课程的习题和课外学习的一些习题. 欢迎关注 『Python习题』 系列,持续更新中 欢迎关注 『Pytho ...

  7. 【Python习题】简易英汉字典(project-ssss)(题目的坑解析+实现代码)

    目录 题目 示例 1‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬ ...

  8. 浙大python习题超详细思路(第二章)

    人生苦短,我用python https://pintia.cn/problem-sets/1111652100718116864/problems/type/7 题源来自pta 没有读者验证码,只是验 ...

  9. Python 习题 老虎、棒棒、鸡、虫

    Python 习题 老虎.棒棒.鸡.虫 看了好多人写的同项目代码,好长,想着写个短的. import time,random def pd(n,t):if (n == 0 and t == 4) or ...

最新文章

  1. Python Module_openpyxl_styles 样式处理
  2. 基于组件的案例:购物车
  3. aPaaS将如何改变软件行业?
  4. JS【知识点】------(转)
  5. python内置模块_三分钟读懂Python内置模块collections
  6. PTA : 函数题 7-3 两个有序链表序列的交集 (20 分)
  7. linux输入法变成乱码,Linux ibus输入法五笔打字的时候出现乱码框框的解决方案
  8. java 字符转换为字符串_java中将字符(Char)转换为字符串的四种方式
  9. 谢霆锋断言暂不再婚 赞张柏芝教子有方
  10. 免费把自己写的网页上传到网上(腾讯云)
  11. vue3组件之间通信(一)——父传子属性和方法
  12. Android 开发学习笔记:七大知识点板块汇总
  13. 华为WEB前端全栈成长计划招募
  14. Deadlock found when trying to get lock; try restarting transaction主要要是死锁问题呢怎么解决
  15. QT根据父窗口子窗口自适应大小
  16. python技术学什么好呢_想自学一些实用的技术,学什么好?
  17. 文化是一种meme,NFT也是
  18. android AudioRecord 音频录制 噪音消除
  19. 当百度也来玩众筹,是否可以为众筹正名?
  20. 《嫌疑犯x的献身》看完了。。。

热门文章

  1. 基于C+sqlite3+GTK的体育馆管理系统项目开发
  2. 记录一下前端针对下载文件的两种请求方式
  3. 学前教育试题库及答案_(完整版)《学前教育学》试题及答案
  4. Ubuntu QT 5.9.0 安装
  5. 证明版~(半)正定\负定的充要条件(用各种矩阵表示)
  6. C语言结构体指针(指向结构体的指针)详解
  7. windows域控制器损坏修复过程
  8. 2021软科中国大学排名(Python抓取前200名)
  9. 输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),输出该字符串并将其转换为十进制数后输出。
  10. Javascript如何判断按下的是鼠标左键还是右键