{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Funcion函数"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1、函数的定义"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"def JiuJiuKouJue():\n",
" for i in range(1,10):\n",
" for j in range(1,i+1):\n",
" print('{}*{}={}'.format(j,i,j*i),end = '\\t')\n",
" print('\\n')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2、函数的调用"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1*1=1\t\n",
"\n",
"1*2=2\t2*2=4\t\n",
"\n",
"1*3=3\t2*3=6\t3*3=9\t\n",
"\n",
"1*4=4\t2*4=8\t3*4=12\t4*4=16\t\n",
"\n",
"1*5=5\t2*5=10\t3*5=15\t4*5=20\t5*5=25\t\n",
"\n",
"1*6=6\t2*6=12\t3*6=18\t4*6=24\t5*6=30\t6*6=36\t\n",
"\n",
"1*7=7\t2*7=14\t3*7=21\t4*7=28\t5*7=35\t6*7=42\t7*7=49\t\n",
"\n",
"1*8=8\t2*8=16\t3*8=24\t4*8=32\t5*8=40\t6*8=48\t7*8=56\t8*8=64\t\n",
"\n",
"1*9=9\t2*9=18\t3*9=27\t4*9=36\t5*9=45\t6*9=54\t7*9=63\t8*9=72\t9*9=81\t\n",
"\n"
]
}
],
"source": [
"JiuJiuKouJue()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 案例一:编写函数求三角形的面积"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"请输入三角形的底边a=2\n",
"请输入三角形的高h=8\n",
"此三角形的面积S=8.00\n"
]
}
],
"source": [
"def S(a,h):\n",
" S = 1/2*a*h\n",
" return S\n",
"aa = float(input ('请输入三角形的底边a='))\n",
"hh = float(input('请输入三角形的高h='))\n",
"area = S(aa,hh)\n",
"print('此三角形的面积S={:.2f}'.format(area))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3、函数的嵌套"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 案例二:P112、例5—1 求(1!)**+(2!)**+...+(6!)**之和"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"前6个整数的阶乘之和: 533417\n"
]
}
],
"source": [
"def main():\n",
" sumFac = 0\n",
" i=1\n",
" while i<=6:\n",
" sumFac=sumFac+squareFac(i)\n",
" i=i+1\n",
" print('前6个整数的阶乘之和:',sumFac)\n",
"def squareFac(n):\n",
" return factorial(n)*factorial(n)\n",
"def factorial(k):\n",
" fac = 1\n",
" i = 1\n",
" while i<=k:\n",
" fac=fac*i\n",
" i=i+1\n",
" return fac\n",
"main()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4、函数的递归"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 案例三:P113、例5—2 通过函数的递归调用就n!"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"请输入一个整数n:9\n",
"362880\n"
]
}
],
"source": [
"def main():\n",
" n = int(input('请输入一个整数n:'))\n",
" if n<0:\n",
" print('输入错误!')\n",
" else:\n",
" print (factorial(n))\n",
"def factorial (k):\n",
" if (k==1 | k==1):\n",
" return 1\n",
" else:\n",
" return k*factorial(k-1)\n",
"main()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 案例4:365天,一周(7天)5天工作日,dayup增长1%(+0.01),2天休息,dayup减少1%(-0.01),请问一年之后的进退情况(初始值为1)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"一年之后进步了4.72\n"
]
}
],
"source": [
"dayup = 1\n",
"for i in range(1,366):\n",
" if i%7 not in [0,6]:\n",
" dayup = dayup*(1+0.01)\n",
" else:\n",
" dayup = dayup*(1-0.01)\n",
"print('一年之后进步了%.2f'%dayup)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### dayup保持不变,2天游戏,dayup减少1%(-0.01),三天工作,2天休息"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"一年之后进步了1.68\n"
]
}
],
"source": [
"dayup = 1\n",
"for i in range(1,366):\n",
" if i%7 in [1,2,3]:\n",
" dayup = dayup*(1+0.01)\n",
" elif i%7 in [0,6]:\n",
" dayup = dayup\n",
" else:\n",
" dayup = dayup*(1-0.01)\n",
"print('一年之后进步了%.2f'%dayup)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 拓展:假如需要一年创收不小于37.78倍(每天创收1%),又想‘三天打鱼两天晒网’,请问每周三天需要创收多大比例?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def DayUp():\n",
" dayup = 1\n",
" for i in range(1,366):\n",
" if i%7 in [1,2,3]:\n",
" dayup = dayup*(1+0.01)\n",
" elif i%7 in [0,6]:\n",
" dayup = dayup\n",
" else:\n",
" dayup = dayup*(1-0.01)\n",
" print('一年之后进步了%.2f'%dayup)\n",
" \n",
" \n",
"DayUp()\n"
]
}
],
"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.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
函数的定义、调用、嵌套、递归
最新推荐文章于 2024-08-05 15:49:48 发布