|
|
@ -1,962 +0,0 @@ |
|
|
|
{ |
|
|
|
"cells": [ |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "2b789064", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"# 实验9~实践12 参考答案" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "e1fa4e6d", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"## 实践9 元组和列表 \n" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "d6b5ae4e", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"### 小试身手1\n", |
|
|
|
"(1)\t已知列表 L1 和L2,由 L1 和 L2 构造L3,并回答问题。 \n", |
|
|
|
"```python\n", |
|
|
|
" >>> L1=[1,2,3,4,5]\n", |
|
|
|
" >>> L2=[\"one\",\"two\",\"three\",\"four\",\"five\"]\n", |
|
|
|
" >>> L3=[[L1[1],L2[1]],[L1[2],L2[2]],[L1[3],L2[3]]]\n", |
|
|
|
"L3 的值是__________\n", |
|
|
|
"L3[1][1]的值是__________\n", |
|
|
|
"执行 L4=L3.pop(2)后,列表L3的值是__________,L4的值是__________。\n", |
|
|
|
"再执行L3.extend(L4),列表L3的值是__________。\n", |
|
|
|
"```" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 8, |
|
|
|
"id": "ee0db3a0", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"L1=[1,2,3,4,5]\n", |
|
|
|
"L2=[\"one\",\"two\",\"three\",\"four\",\"five\"]\n" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 11, |
|
|
|
"id": "61ec7df3", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"data": { |
|
|
|
"text/plain": [ |
|
|
|
"[[2, 'two'], [3, 'three'], [4, 'four']]" |
|
|
|
] |
|
|
|
}, |
|
|
|
"execution_count": 11, |
|
|
|
"metadata": {}, |
|
|
|
"output_type": "execute_result" |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"L3=[[L1[1],L2[1]],[L1[2],L2[2]],[L1[3],L2[3]]]\n", |
|
|
|
"L3" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 13, |
|
|
|
"id": "873f2572", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"data": { |
|
|
|
"text/plain": [ |
|
|
|
"'three'" |
|
|
|
] |
|
|
|
}, |
|
|
|
"execution_count": 13, |
|
|
|
"metadata": {}, |
|
|
|
"output_type": "execute_result" |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"L3[1][1]" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 14, |
|
|
|
"id": "d3ca6442", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"data": { |
|
|
|
"text/plain": [ |
|
|
|
"[4, 'four']" |
|
|
|
] |
|
|
|
}, |
|
|
|
"execution_count": 14, |
|
|
|
"metadata": {}, |
|
|
|
"output_type": "execute_result" |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"L4=L3.pop(2)\n", |
|
|
|
"L4" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 20, |
|
|
|
"id": "7910a864", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"data": { |
|
|
|
"text/plain": [ |
|
|
|
"[[2, 'two'], [3, 'three'], 4, 'four']" |
|
|
|
] |
|
|
|
}, |
|
|
|
"execution_count": 20, |
|
|
|
"metadata": {}, |
|
|
|
"output_type": "execute_result" |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"L3" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 16, |
|
|
|
"id": "f2a4aaa7", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"data": { |
|
|
|
"text/plain": [ |
|
|
|
"[[2, 'two'], [3, 'three'], 4, 'four']" |
|
|
|
] |
|
|
|
}, |
|
|
|
"execution_count": 16, |
|
|
|
"metadata": {}, |
|
|
|
"output_type": "execute_result" |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"L3.extend(L4)\n", |
|
|
|
"L3" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": null, |
|
|
|
"id": "a6e368db", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "de8197bc", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"(2)假设执行了如下语句\n", |
|
|
|
"```python\n", |
|
|
|
">>> s1=[0,1,2,3,4,5,6]\n", |
|
|
|
">>> s2=['SUN','MON','TUE','WED','THU','FRI','SAT']\n", |
|
|
|
"利用 s1、s2 和列表操作,创建下列结果的序列对象。\n", |
|
|
|
"```" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 18, |
|
|
|
"id": "d985454f", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"s1=[0,1,2,3,4,5,6]\n", |
|
|
|
"s2=['SUN','MON','TUE','WED','THU','FRI','SAT']" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 19, |
|
|
|
"id": "a5a002be", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"data": { |
|
|
|
"text/plain": [ |
|
|
|
"'SUN|MON|TUE|WED|THU|FRI|SAT'" |
|
|
|
] |
|
|
|
}, |
|
|
|
"execution_count": 19, |
|
|
|
"metadata": {}, |
|
|
|
"output_type": "execute_result" |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"#s3: 'SUN|MON|TUE|WED|THU|FRI|SAT'\n", |
|
|
|
"s3=\"|\".join(s2)\n", |
|
|
|
"s3" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 21, |
|
|
|
"id": "f8bb4c02", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"data": { |
|
|
|
"text/plain": [ |
|
|
|
"[3, 4, 3, 4, 3, 4]" |
|
|
|
] |
|
|
|
}, |
|
|
|
"execution_count": 21, |
|
|
|
"metadata": {}, |
|
|
|
"output_type": "execute_result" |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"#s4:[3,4,3,4,3,4]\n", |
|
|
|
"s4=s1[3:5]*3\n", |
|
|
|
"s4" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 23, |
|
|
|
"id": "bea9fa4d", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"name": "stdout", |
|
|
|
"output_type": "stream", |
|
|
|
"text": [ |
|
|
|
"[(0, 'SUN'), (1, 'MON'), (2, 'TUE'), (3, 'WED'), (4, 'THU'), (5, 'FRI'), (6, 'SAT')]\n" |
|
|
|
] |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"#s5: [(0,'SUN'),(1,'MON'),(2,'TUE'),(3,'WED'),(4,'THU'),(5,'FRI'),(6,'SAT')]\n", |
|
|
|
"s5=list(zip(s1,s2))\n", |
|
|
|
"print(s5)" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "b7e2a784", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"## 小试身手2\n", |
|
|
|
"### (1)合并列表 \n", |
|
|
|
"使用随机函数randint(),建立两个长度为5的二维列表A和B。包含的数据如下:\n", |
|
|
|
"\n", |
|
|
|
"A列表:包含子列表 [学号,p成绩,m成绩],学号为从1开始递增的正整数,成绩为0-100之间的随机整数。\n", |
|
|
|
"\n", |
|
|
|
"B列表:包含子列表 [学号,q成绩],学号为从1开始递增的正整数,成绩为0-100之间的随机整数\n", |
|
|
|
"\n", |
|
|
|
"先需要将A,B两个列表数据进行合并,即将B列表中的‘q成绩’添加到A列表中的相同学号的子列表中。\n", |
|
|
|
"\n", |
|
|
|
"输入一个整数k,将B列表中的'q成绩'插入到A列表相同学号的子列表的k位置上。\n", |
|
|
|
"\n", |
|
|
|
"合并完成后,输出合并后的A列表。\n", |
|
|
|
"\n", |
|
|
|
"注意:为保证生成固定序列,本题需要使用同一个循环结构生成两个随机列表A和B,类似:\n", |
|
|
|
"```python\n", |
|
|
|
"for #######:\n", |
|
|
|
" #A列表添加 学号,p成绩,m成绩\n", |
|
|
|
" #B列表添加 学号,q成绩\n", |
|
|
|
"运行示例:\n", |
|
|
|
"A: [[1, 94, 58], [2, 6, 84], [3, 26, 42], [4, 39, 98], [5, 22, 18]]\n", |
|
|
|
"B: [[1, 33], [2, 82], [3, 29], [4, 26], [5, 24]]\n", |
|
|
|
"3\n", |
|
|
|
"[[1, 94, 58, 33], [2, 6, 84, 82], [3, 26, 42, 29], [4, 39, 98, 26], [5, 22, 18, 24]]\n", |
|
|
|
"```" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": null, |
|
|
|
"id": "c4adadb0", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"import random\n", |
|
|
|
"a=[]\n", |
|
|
|
"b=[]\n", |
|
|
|
"\n", |
|
|
|
"for i in range(1,6): \n", |
|
|
|
" a.append([i,random.randint(0,100),random.randint(0,100)]) \n", |
|
|
|
" b.append([i,random.randint(0,100)])\n", |
|
|
|
"print(\"A:\",a)\n", |
|
|
|
"print(\"B:\",b)\n", |
|
|
|
"p=int(input()) \n", |
|
|
|
"for i in range(len(a)):\n", |
|
|
|
" a[i].insert(p,b[i][1]) \n", |
|
|
|
"print(a) " |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "f9dd4a7a", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"### (2)成绩统计\n", |
|
|
|
"输入用空格分隔的两个正整数n和m,表示后面要接收m个人的n门课的成绩的输入。\n", |
|
|
|
"随后的m行,每行输入用空格分隔的n个成绩。题目保证m和n都在(0-100]之间。\n", |
|
|
|
"请统计\n", |
|
|
|
"(1)每门课的平均成绩。\n", |
|
|
|
"(2)每个学生的平均成绩\n", |
|
|
|
"(3)每门课的最高分" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 31, |
|
|
|
"id": "23a32ac5", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"name": "stdout", |
|
|
|
"output_type": "stream", |
|
|
|
"text": [ |
|
|
|
"n=3\n", |
|
|
|
"m=5\n", |
|
|
|
"63 87 76\n", |
|
|
|
"98 92 90\n", |
|
|
|
"86 83 82\n", |
|
|
|
"69 98 71\n", |
|
|
|
"77 74 92\n", |
|
|
|
"[[63, 87, 76], [98, 92, 90], [86, 83, 82], [69, 98, 71], [77, 74, 92]]\n", |
|
|
|
"每个学生的平均成绩: [75.33, 93.33, 83.67, 79.33, 81.0]\n", |
|
|
|
"每门课的平均成绩: [78.6, 86.8, 82.2]\n", |
|
|
|
"每门课的最高分: [98, 98, 92]\n" |
|
|
|
] |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"n,m = int(input(\"n=\")),int(input(\"m=\"))\n", |
|
|
|
"Scores = []\n", |
|
|
|
"for i in range(m):\n", |
|
|
|
" Scores.append([int(x) for x in input().split()])\n", |
|
|
|
"print(Scores)\n", |
|
|
|
"avgs=[]#每个学生的平均成绩\n", |
|
|
|
"for stu in Scores:\n", |
|
|
|
" avgs.append(round(sum(stu)/len(stu),2))\n", |
|
|
|
"print(\"每个学生的平均成绩:\",avgs)\n", |
|
|
|
"\n", |
|
|
|
"ksums=[0]*n #每门课的平均成绩\n", |
|
|
|
"kmaxs=[0]*n #每门课的最高分\n", |
|
|
|
"for stu in Scores:\n", |
|
|
|
" for i in range(n):\n", |
|
|
|
" ksums[i]+=stu[i]\n", |
|
|
|
" if stu[i]>kmaxs[i]:\n", |
|
|
|
" kmaxs[i] = stu[i]\n", |
|
|
|
"kavgs = [ round(x/m,2) for x in ksums]\n", |
|
|
|
"print(\"每门课的平均成绩:\",kavgs)\n", |
|
|
|
"print(\"每门课的最高分:\",kmaxs)" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": null, |
|
|
|
"id": "84af1780", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "5262941a", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"## 实践10 集合和字典\n", |
|
|
|
"小试身手1 (略)" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "471a3f13", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"### 小试身手2\n", |
|
|
|
"输入两个整数,在这两个整数组成的闭区间范围内生成100个随机整数,并统计出现数据的次数,按照生成随机数从小到大的顺序,每行输出一个生成的整数以及其出现的次数,以空格间隔。 \n", |
|
|
|
"```python\n", |
|
|
|
"例如:\n", |
|
|
|
"输入:\n", |
|
|
|
"3 5\n", |
|
|
|
"输出:\n", |
|
|
|
"3 36\n", |
|
|
|
"4 39\n", |
|
|
|
"5 25\n", |
|
|
|
"```" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 32, |
|
|
|
"id": "c82977a4", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"name": "stdout", |
|
|
|
"output_type": "stream", |
|
|
|
"text": [ |
|
|
|
"3 5\n", |
|
|
|
"3 36\n", |
|
|
|
"4 39\n", |
|
|
|
"5 25\n" |
|
|
|
] |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"import random\n", |
|
|
|
"dic = {}\n", |
|
|
|
"m,n=map(int,input().split())\n", |
|
|
|
"random.seed(10)\n", |
|
|
|
"\n", |
|
|
|
"for i in range (100):\n", |
|
|
|
" key = random.randint(m,n)\n", |
|
|
|
" if key in dic:\n", |
|
|
|
" dic[key] += 1\n", |
|
|
|
" else:\n", |
|
|
|
" dic[key] = 1\n", |
|
|
|
"for i in sorted(dic.keys()):\n", |
|
|
|
" print('{} {}'.format(i,dic[i]))" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "9d5b06fc", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"## 实践11 模块化程序设计 \n", |
|
|
|
"1.完整程序,程序功能实现统计1000以内每100个整数中素数的个数。" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 2, |
|
|
|
"id": "dcba82ab", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"name": "stdout", |
|
|
|
"output_type": "stream", |
|
|
|
"text": [ |
|
|
|
" 1- 100 有26个素数\n", |
|
|
|
"101- 200 有21个素数\n", |
|
|
|
"201- 300 有16个素数\n", |
|
|
|
"301- 400 有16个素数\n", |
|
|
|
"401- 500 有17个素数\n", |
|
|
|
"501- 600 有14个素数\n", |
|
|
|
"601- 700 有16个素数\n", |
|
|
|
"701- 800 有14个素数\n", |
|
|
|
"801- 900 有15个素数\n", |
|
|
|
"901-1000 有14个素数\n" |
|
|
|
] |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"from math import sqrt\n", |
|
|
|
"def isPrime(n):\n", |
|
|
|
" m=int(sqrt(n))\n", |
|
|
|
" for i in range(2,m+1):\n", |
|
|
|
" if n%i ==0:\n", |
|
|
|
" return False\n", |
|
|
|
" return True\n", |
|
|
|
"def countPrimes(start,end):\n", |
|
|
|
" c=0\n", |
|
|
|
" for n in range(start,end+1):\n", |
|
|
|
" if isPrime(n):\n", |
|
|
|
" c=c+1\n", |
|
|
|
" return c \n", |
|
|
|
"\n", |
|
|
|
"#主程序\n", |
|
|
|
"for start in range(1,1000,100):\n", |
|
|
|
" print(f\"{start:3d}-{start+99:4d} 有{countPrimes(start,start+99)}个素数\")\n", |
|
|
|
" " |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "e33847ab", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
" ## 3.斐波那契数列\n", |
|
|
|
" ### (1) 单变量实现" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": null, |
|
|
|
"id": "efa91d0c", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"def fib(n):\n", |
|
|
|
" if n<=2:\n", |
|
|
|
" return 1\n", |
|
|
|
" f1=f2=1\n", |
|
|
|
" while n>=3:\n", |
|
|
|
" f3=f1+f2\n", |
|
|
|
" f1,f2=f2,f3\n", |
|
|
|
" n=n-1\n", |
|
|
|
" return f3\n", |
|
|
|
"\n", |
|
|
|
"\n", |
|
|
|
"n=int(input(\"n=\"))\n", |
|
|
|
"print(fib(n))\n" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "4d0b3b92", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"## (2) 列表实现" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": null, |
|
|
|
"id": "48aa767e", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"def fib( n ):\n", |
|
|
|
" if n<=2:\n", |
|
|
|
" return 1\n", |
|
|
|
" FL=[1,1]\n", |
|
|
|
" i=2\n", |
|
|
|
" while i<n:\n", |
|
|
|
" FL.append(FL[i-1]+FL[i-2])\n", |
|
|
|
" i=i+1\n", |
|
|
|
" return FL[-1] \n", |
|
|
|
" \n", |
|
|
|
"n=int(input(\"n=\"))\n", |
|
|
|
"print(fib(n))\n" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "5dee8615", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"## (3) 字典实现" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": null, |
|
|
|
"id": "4cde2e34", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"def fib(n): \n", |
|
|
|
" a = 0\n", |
|
|
|
" b = 1\n", |
|
|
|
" dic = {} ## {} or dict() \n", |
|
|
|
" for i in range(n): ## range \n", |
|
|
|
" dic[i]=a ## a \n", |
|
|
|
" a,b=b,a+b\n", |
|
|
|
" \n", |
|
|
|
" return dic ## dic \n", |
|
|
|
" \n", |
|
|
|
"#调用函数生成斐波那契数列中的前20个斐波那契数\n", |
|
|
|
"fibonac = fib(20) ## fib(20) 调用函数 \n", |
|
|
|
" print(fibonac[key], end=\",\")\n" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "7494690d", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"## (4)递归函数" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": null, |
|
|
|
"id": "5da061f6", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"def Fib(n):\n", |
|
|
|
" if n==1 or n==2 :\n", |
|
|
|
" return 1\n", |
|
|
|
" return Fib(n-1)+Fib(n-2)\n", |
|
|
|
"\n", |
|
|
|
"n=int(input(\"n=\"))\n", |
|
|
|
"print(Fib(n))\n", |
|
|
|
"\n", |
|
|
|
"\n" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "fdcc945d", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"## (5) 优化的递归函数" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": null, |
|
|
|
"id": "46f27dea", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"d_fib={1:1,2:1}\n", |
|
|
|
"def Fib(n):\n", |
|
|
|
" if n in d_fib :\n", |
|
|
|
" return d_fib[n]\n", |
|
|
|
" m=Fib(n-1)+Fib(n-2)\n", |
|
|
|
" d_fib[n]= m\n", |
|
|
|
" return m\n", |
|
|
|
"\n", |
|
|
|
"n=int(input(\"n=\"))\n", |
|
|
|
"print(Fib(n))" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "eecb1ba6", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"## 实践12 再谈Python函数 \n", |
|
|
|
"### 小试身手(1) \n", |
|
|
|
"阅读可变参数的vfunc函数,仿写milti函数实现返回所有参数的乘积" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 33, |
|
|
|
"id": "b4245d1d", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"data": { |
|
|
|
"text/plain": [ |
|
|
|
"720" |
|
|
|
] |
|
|
|
}, |
|
|
|
"execution_count": 33, |
|
|
|
"metadata": {}, |
|
|
|
"output_type": "execute_result" |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"def milti(*num):\n", |
|
|
|
" p=1\n", |
|
|
|
" for x in num:\n", |
|
|
|
" p=p*x\n", |
|
|
|
" return p\n", |
|
|
|
"milti(1,2,3,4,5,6)" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "e2c1ee22", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"### 小试身手(2) \n", |
|
|
|
"1.判断奇数 \n", |
|
|
|
"判断奇数的函数lambda函数的定义和使用 \n", |
|
|
|
"(1)编写一个函数isOdd,能够判断一个整数是否是奇数,返回True或False。 \n" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 35, |
|
|
|
"id": "af90b317", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"\n", |
|
|
|
"isodd = lambda x: x%2 == 1" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "519d41a6", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"(2)请写出输入一个数x,调用isOdd函数判断x是否是奇数的程序段" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 36, |
|
|
|
"id": "b75e2c05", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"name": "stdout", |
|
|
|
"output_type": "stream", |
|
|
|
"text": [ |
|
|
|
"x=8\n", |
|
|
|
"False\n" |
|
|
|
] |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"x = int(input(\"x=\"))\n", |
|
|
|
"print(isodd(x))" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "71637790", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"(3)请写出求50-100之间所有奇数的和的程序段,(使用isOdd实现奇数判断)。" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 43, |
|
|
|
"id": "22543b83", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"name": "stdout", |
|
|
|
"output_type": "stream", |
|
|
|
"text": [ |
|
|
|
"s= 1875\n" |
|
|
|
] |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"s=0\n", |
|
|
|
"for x in range(50,100):\n", |
|
|
|
" if isodd(x):\n", |
|
|
|
" # print(x)\n", |
|
|
|
" s+=x\n", |
|
|
|
"print(\"s=\",s)\n" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "3ad734be", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"(4)请写出求50-100之间所有偶数的和的程序段(使用isOdd实现偶数判断)。" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 41, |
|
|
|
"id": "23d97c6a", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"name": "stdout", |
|
|
|
"output_type": "stream", |
|
|
|
"text": [ |
|
|
|
"s= 1950\n" |
|
|
|
] |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"s=0\n", |
|
|
|
"for x in range(50,101):\n", |
|
|
|
" if not isodd(x):\n", |
|
|
|
" # print(x)\n", |
|
|
|
" s+=x\n", |
|
|
|
"print(\"s=\",s)\n" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "71f64423", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"2.构造整数:求由任意个整数上的个位数构造的新整数并输出。 \n", |
|
|
|
"具体要求 \n", |
|
|
|
"(1)编写lambda函数getLastBit,该函数返回正整数number的个位数,例如正整数1234,则返回4。 \n", |
|
|
|
"(2)编写可变参数的函数makeNumber,求任意个整数的个位数构成的一个新整数。 \n", |
|
|
|
"(3)输出(45、81、673、938)4个数的个位数构成的新整数,得到的新的整数为:5138。请填空完整程序。 \n" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 45, |
|
|
|
"id": "2b89059b", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"name": "stdout", |
|
|
|
"output_type": "stream", |
|
|
|
"text": [ |
|
|
|
"新整数是5138\n" |
|
|
|
] |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"#定义lambda函数getLastBit返回一个数的个位数\n", |
|
|
|
"getLastBit=lambda number:number%10\n", |
|
|
|
"\n", |
|
|
|
"#定义一个可变参数的函数makeNumber,求任意个整数的个位数构成的一个新整数\n", |
|
|
|
"def makeNumber(*b):\n", |
|
|
|
" s=0\n", |
|
|
|
" for i in b:\n", |
|
|
|
" s=s*10+getLastBit(i)\n", |
|
|
|
" return s\n", |
|
|
|
"\n", |
|
|
|
"#输出(45、81、673、938)4个数的个位数构成的新整数。\n", |
|
|
|
"\n", |
|
|
|
"print(f\"新整数是{makeNumber(45,81,673,938)}\")\n" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "cf9617cc", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"## 实践13 递归函数" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "b26582d3", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"### 小试身手" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "0bff8c63", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"1.使用递归求最大公约数" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": null, |
|
|
|
"id": "0bd1eb79", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"def gcd(m,n):\n", |
|
|
|
" if m%n == 0:\n", |
|
|
|
" return n\n", |
|
|
|
" else:\n", |
|
|
|
" return gcd(n,m%n)\n", |
|
|
|
"print(gcd(15,25))" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "d8006798", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"2.使用递归方法逆序输出一个整数中的数字" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 3, |
|
|
|
"id": "099d4634", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
" def reverseDisplay(value):\n", |
|
|
|
" if value>0:\n", |
|
|
|
" print(value%10,end=\"\")\n", |
|
|
|
" reverseDisplay(value//10)\n", |
|
|
|
" return" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 4, |
|
|
|
"id": "cc25a415", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"name": "stdout", |
|
|
|
"output_type": "stream", |
|
|
|
"text": [ |
|
|
|
"12345" |
|
|
|
] |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"reverseDisplay(54321)" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"id": "0e80ecad", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"3.使用递归方法逆序输出一个字符串中的字母 " |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 6, |
|
|
|
"id": "a2ff79ad", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"name": "stdout", |
|
|
|
"output_type": "stream", |
|
|
|
"text": [ |
|
|
|
"edcba" |
|
|
|
] |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"def reverseDisplay(s):\n", |
|
|
|
" if len(s)!=1:\n", |
|
|
|
" reverseDisplay(s[1:])\n", |
|
|
|
" print(s[0],end=\"\")\n", |
|
|
|
"reverseDisplay(\"abcde\")" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": null, |
|
|
|
"id": "fcc70358", |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [] |
|
|
|
} |
|
|
|
], |
|
|
|
"metadata": { |
|
|
|
"kernelspec": { |
|
|
|
"display_name": "Python 3", |
|
|
|
"language": "python", |
|
|
|
"name": "python3" |
|
|
|
}, |
|
|
|
"language_info": { |
|
|
|
"codemirror_mode": { |
|
|
|
"name": "ipython", |
|
|
|
"version": 3 |
|
|
|
}, |
|
|
|
"file_extension": ".py", |
|
|
|
"mimetype": "text/x-python", |
|
|
|
"name": "python", |
|
|
|
"nbconvert_exporter": "python", |
|
|
|
"pygments_lexer": "ipython3", |
|
|
|
"version": "3.7.10" |
|
|
|
} |
|
|
|
}, |
|
|
|
"nbformat": 4, |
|
|
|
"nbformat_minor": 5 |
|
|
|
} |