【python】习题第9周
【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周相关推荐
- Python语言程序设计 第一周习题
Python语言程序设计 第一周习题 习题1 获得用户输入的一个整数,参考该整数值,打印输出"Hello World",要求: ...
- Python.习题五 列表与元组(下)
Python.<习题五> 列表与元组 11.假设列表lst_info=[["李玉","男",25],["金忠","男& ...
- 近找到了一个免费的python教程,两周学会了python开发【内附学习视频】
原文作者:佛山小程序员 原文链接:https://blog.csdn.net/weixin_44192923/article/details/86515984 最近找到了一个免费的python教程,两 ...
- 最近找到了一个免费的python教程,两周学会了python开发
最近找到了一个免费的python教程,两周学会了python开发 最近找到了一个免费的python教程,两周学会了python开发.推荐给大家,希望召集更多的朋友一起学习python. 最近开始整理p ...
- 【Python习题】计算弓形的面积(保姆级图文+实现代码)
目录 题目 实现思路 实现代码 总结 主要内容是校设课程的习题和课外学习的一些习题. 欢迎关注 『Python习题』 系列,持续更新中 欢迎关注 『Python习题』 系列,持续更新中 题目 题目 如 ...
- 百分制成绩转换五分制F【Python习题】(保姆级图文+实现代码)
目录 题目 描述 输入格式 输出格式 输入输出示例 思路 代码 实现效果 总结 主要内容是校设课程的习题和课外学习的一些习题. 欢迎关注 『Python习题』 系列,持续更新中 欢迎关注 『Pytho ...
- 【Python习题】简易英汉字典(project-ssss)(题目的坑解析+实现代码)
目录 题目 示例 1 ...
- 浙大python习题超详细思路(第二章)
人生苦短,我用python https://pintia.cn/problem-sets/1111652100718116864/problems/type/7 题源来自pta 没有读者验证码,只是验 ...
- Python 习题 老虎、棒棒、鸡、虫
Python 习题 老虎.棒棒.鸡.虫 看了好多人写的同项目代码,好长,想着写个短的. import time,random def pd(n,t):if (n == 0 and t == 4) or ...
最新文章
- Python Module_openpyxl_styles 样式处理
- 基于组件的案例:购物车
- aPaaS将如何改变软件行业?
- JS【知识点】------(转)
- python内置模块_三分钟读懂Python内置模块collections
- PTA : 函数题 7-3 两个有序链表序列的交集 (20 分)
- linux输入法变成乱码,Linux ibus输入法五笔打字的时候出现乱码框框的解决方案
- java 字符转换为字符串_java中将字符(Char)转换为字符串的四种方式
- 谢霆锋断言暂不再婚 赞张柏芝教子有方
- 免费把自己写的网页上传到网上(腾讯云)
- vue3组件之间通信(一)——父传子属性和方法
- Android 开发学习笔记:七大知识点板块汇总
- 华为WEB前端全栈成长计划招募
- Deadlock found when trying to get lock; try restarting transaction主要要是死锁问题呢怎么解决
- QT根据父窗口子窗口自适应大小
- python技术学什么好呢_想自学一些实用的技术,学什么好?
- 文化是一种meme,NFT也是
- android AudioRecord 音频录制 噪音消除
- 当百度也来玩众筹,是否可以为众筹正名?
- 《嫌疑犯x的献身》看完了。。。
热门文章
- 基于C+sqlite3+GTK的体育馆管理系统项目开发
- 记录一下前端针对下载文件的两种请求方式
- 学前教育试题库及答案_(完整版)《学前教育学》试题及答案
- Ubuntu QT 5.9.0 安装
- 证明版~(半)正定\负定的充要条件(用各种矩阵表示)
- C语言结构体指针(指向结构体的指针)详解
- windows域控制器损坏修复过程
- 2021软科中国大学排名(Python抓取前200名)
- 输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),输出该字符串并将其转换为十进制数后输出。
- Javascript如何判断按下的是鼠标左键还是右键