{
|
|
"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
|
|
}
|