PyCourse/入口.ipynb

692 lines
15 KiB
Plaintext
Raw Permalink Normal View History

2024-06-30 12:05:06 +08:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**程序**是按照一定**顺序**完成任务的流程\n",
"\n",
"做蛋炒饭步骤:\n",
"- 准备米饭\n",
"- 准备鸡蛋\n",
"- 准备配料\n",
"- 炒蛋\n",
"- 炒配料\n",
"- 调味\n",
"- 出锅\n",
"\n",
"菜谱 = 程序 -- 自然语言 -->程序语言\n",
"编写者 是人\n",
"执行者 是人ß\n",
"\n",
"计算机程序和人做饭程序最关键差别是**布尔运算**\n",
"- 按照顺序执行任务\n",
"- 根据不同情况执行不同任务\n",
" 如果条件满足,则重复执行某一任务\n",
"\n",
"计算机强大便是在于他**可编程**\n",
"而可编程的核心在于**布尔运算**及其相应**流程控制**\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"False\n",
"True\n"
]
}
],
"source": [
"print(1 == 2)\n",
"print(1 != 2)"
]
},
{
"cell_type": "markdown",
"metadata": {
"vscode": {
"languageId": "html"
}
},
"source": [
"# 逻辑运算符\n",
"| 比较操作符 | 意义 | 示例 | 布尔值 | \n",
"| --- | --- | --- | --- | \n",
"| == | 等于 | 1 == 2 | False | \n",
"| != | 不等于 | 1 != 2 | True | \n",
"| > | 大于 | 1 >2 | False | \n",
"| >= | 大于等于 | 1>= 1 | True | \n",
"| < | 小于 | 1< 2 | True | \n",
"| <= | 小于等于 | 1<=2 | True | \n",
"| in | 属于 | \"a\" in \"basic\" | True | "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 布尔运算操作符\n",
"操作对象:数字值或字符串值\n",
"操作运算符:与、或、非\n",
"| and | True | False |\n",
"|--------|--------|---------|\n",
"| True | True | False | \n",
"| False | False | False | \n",
"\n",
"<br>\n",
"\n",
"| or | True | False |\n",
"|--------|--------|---------|\n",
"| True | True | True | \n",
"| False | True | False | \n",
"\n",
"<br>\n",
"\n",
"| not | True | False |\n",
"|--------|--------|---------|\n",
"| | False | True | "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(True and False) yields: False\n",
"(True and True) yields: True\n",
"(False and True) yields: False\n",
"(True or False) yields: True\n",
"(False or True) yields: True\n",
"(False or False) yields: False\n",
"(not True) yields: False\n",
"(not False) yields: True\n"
]
}
],
"source": [
"print('(True and False) yields:', True and False)\n",
"print('(True and True) yields:', True and True)\n",
"print('(False and True) yields:', False and True)\n",
"print('(True or False) yields:', True or False)\n",
"print('(False or True) yields:', False or True)\n",
"print('(False or False) yields:', False or False)\n",
"print('(not True) yields:', not True)\n",
"print('(not False) yields:', not False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 流程控制"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"255 is odd.\n"
]
}
],
"source": [
"import random\n",
"r = random.randrange(1, 1000)\n",
"# 暂时忽略以上两句的原理,只需要了解其结果:\n",
"# 引入随机数而后每次执行的时候r 的值不同\n",
"\n",
"if r % 2 == 0:\n",
" print(r, 'is even.')\n",
"else:\n",
" print(r, 'is odd.')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"1+1"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n"
]
}
],
"source": [
"print(1+1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"|英文|中文|\n",
"|---|---|\n",
"|Assignment|赋值|\n",
"|Variable|变量|\n",
"|Literal|常量|\n",
"|Loop|循环|"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"3\n",
"5\n",
"7\n",
"9\n"
]
}
],
"source": [
"for i in range(10):\n",
" if i % 2 != 0:\n",
" print(i)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"打印100以为的质数<br>\n",
"质数定义一个数大于等于2且只有在被它自身或者1做为除数时余数为0<br>\n",
"设n为整数n>=2<br>\n",
"若n==2n是质数<br>\n",
"若n>2就把n作为被除数从2开始一直到n-1都作为除数逐一计算看看余数是否等于0<br>\n",
"&nbsp;&nbsp;&nbsp;&nbsp;如果是,那就不用接着算了,它不是质数;<br>\n",
"&nbsp;&nbsp;&nbsp;&nbsp;如果全部都试过了余数都不是0那么它是质数。<br>"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n",
"3\n",
"5\n",
"7\n",
"11\n",
"13\n",
"17\n",
"19\n",
"23\n",
"29\n",
"31\n",
"37\n",
"41\n",
"43\n",
"47\n",
"53\n",
"59\n",
"61\n",
"67\n",
"71\n",
"73\n",
"79\n",
"83\n",
"89\n",
"97\n"
]
}
],
"source": [
"for n in range(2, 100): #range(2,100)表示含左侧 2不含右侧 100是不是第三次看到这个说法了\n",
" if n == 2:\n",
" print(n)\n",
" continue\n",
" for i in range(2, n):\n",
" if (n % i) == 0:\n",
" break\n",
" else: # 这里目前你可能看不懂…… 但先关注结果吧。\n",
" print(n) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 算法\n",
"以上程序,都可以称之为算法,而以上算法也都可以优化。\n",
"比方说寻找质数的时候完全没有必要将终点设在99按照数学逻辑设置在√n就好\n",
"```python\n",
"for n in range(2, 100):\n",
" if n == 2:\n",
" print(n)\n",
" continue\n",
" for i in range(2, int(n ** 0.5)+1): #为什么要 +1 以后再说…… n 的 1/2 次方,相当于根号 n。\n",
" if (n % i) == 0:\n",
" break\n",
" else:\n",
" print(n) \n",
"\n",
"优化没有固定的方法,所有工具,其效率都取决于使用他的人"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 函数\n",
"- 函数名Function Name\n",
"- 参数Parameters\n",
"- 返回值Return Value\n",
"- 调用Call"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.1415926"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = abs(-3.1415926)\n",
"a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"pip install xxx"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def is_prime(n): # 定义 is_prime(),接收一个参数\n",
" if n < 2: # 开始使用接收到的那个参数(值)开始计算……\n",
" return False # 不再是返回给人,而是返回给调用它的代码……\n",
" if n == 2:\n",
" return True\n",
" for m in range(2, int(n**0.5)+1):\n",
" if (n % m) == 0:\n",
" return False\n",
" else:\n",
" return True\n",
"\n",
"for i in range(80, 110):\n",
" if is_prime(i): # 调用 is_prime() 函数,\n",
" print(i) # 如果返回值为 True则向屏幕输出 i"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 细节补充,整体概括"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 语句"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"3\n",
"5\n",
"7\n",
"9\n",
"----------------------------------\n",
"1\n",
"3\n",
"5\n",
"7\n",
"9\n"
]
}
],
"source": [
"# 通常情况下,建议一行写一条语句\n",
"for i in range(10):\n",
" if i % 2 != 0:\n",
" print(i)\n",
"\n",
"print(\"----------------------------------\")\n",
"\n",
"#但是,有时为了简化,也会使用一行表达\n",
"print(\"\\n\".join(str(i) for i in range(10) if i % 2 != 0))\n",
"\n",
"#但是,要注意,这样子写虽然逼格上来了,但是对计算机来说,效率没有上面高"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 语句块"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"3\n",
"5\n",
"7\n",
"9\n",
"11\n",
"13\n",
"15\n",
"17\n",
"19\n",
"Collected odd numbers: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]\n"
]
}
],
"source": [
"def collect_and_print_odd_numbers(n):\n",
" # 初始化一个空列表来存储奇数\n",
" odd_numbers = []\n",
"\n",
" # 循环从0到n包括n\n",
" for i in range(n + 1):\n",
" if i % 2 != 0:\n",
" # 如果i是奇数则将其添加到列表中\n",
" odd_numbers.append(i)\n",
" \n",
" # 打印奇数列表中的每个数字\n",
" print(\"\\n\".join(str(num) for num in odd_numbers))\n",
"\n",
" # 返回奇数列表\n",
" return odd_numbers\n",
"\n",
"# 调用函数收集并打印0到20之间的奇数\n",
"odd_numbers_list = collect_and_print_odd_numbers(20)\n",
"print(\"Collected odd numbers:\", odd_numbers_list)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#python的注释一共有两种方法\n",
"#一般来说,这种写法放在中间\n",
"\n",
"\"\"\"\n",
"三个引号中间,都是注释区域\n",
"\n",
"一般来说,这种注释方法写在开头\n",
"\"\"\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"\"\"\"\n",
"\n",
"\"\"\"\n",
"#"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n"
]
}
],
"source": [
"你好 = 1\n",
"print(你好)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"3\n",
"5\n",
"7\n",
"9\n",
"11\n",
"13\n",
"15\n",
"17\n",
"19\n",
"Collected odd numbers: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]\n"
]
}
],
"source": [
"def collect_and_print_odd_numbers(n):\n",
"\n",
" \"\"\"\n",
" 打印并返回从0到给定数字n之间的所有奇数。\n",
"\n",
" 参数:\n",
" n (int): 要检查的最大数字。\n",
"\n",
" 返回:\n",
" list: 包含所有奇数的列表。\n",
" \"\"\"\n",
" \n",
" # 初始化一个空列表来存储奇数\n",
" odd_numbers = []\n",
"\n",
" # 循环从0到n包括n\n",
" for i in range(n + 1):\n",
" if i % 2 != 0:\n",
" # 如果i是奇数则将其添加到列表中\n",
" odd_numbers.append(i)\n",
" \n",
" # 打印奇数列表中的每个数字\n",
" print(\"\\n\".join(str(num) for num in odd_numbers))\n",
"\n",
" # 返回奇数列表\n",
" return odd_numbers\n",
"\n",
"# 调用函数收集并打印0到20之间的奇数\n",
"odd_numbers_list = collect_and_print_odd_numbers(20)\n",
"print(\"Collected odd numbers:\", odd_numbers_list)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 操作运算符"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"|运算符号|含义|\n",
"|-------|----|\n",
"|+|加|\n",
"|-|减|\n",
"|*|乘|\n",
"|**|幂|\n",
"|/|除|\n",
"|//|取商|\n",
"|%|取余|"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# 加法示例\n",
"a = 5\n",
"b = 3\n",
"sum_result = a + b # 5 + 3 = 8\n",
"print(\"加法结果:\", sum_result)\n",
"\n",
"# 减法示例\n",
"sub_result = a - b # 5 - 3 = 2\n",
"print(\"减法结果:\", sub_result)\n",
"\n",
"# 乘法示例\n",
"mul_result = a * b # 5 * 3 = 15\n",
"print(\"乘法结果:\", mul_result)\n",
"\n",
"# 除法示例\n",
"div_result = a / b # 5 / 3 = 1.6666666666666667\n",
"print(\"除法结果:\", div_result)\n",
"\n",
"# 幂运算示例\n",
"pow_result = a ** b # 5 ** 3 = 125\n",
"print(\"幂运算结果:\", pow_result)\n",
"\n",
"# 取商示例\n",
"floordiv_result = a // b # 5 // 3 = 1\n",
"print(\"取商结果:\", floordiv_result)\n",
"\n",
"# 取余示例\n",
"mod_result = a % b # 5 % 3 = 2\n",
"print(\"取余结果:\", mod_result)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 赋值"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3\n",
"2\n"
]
}
],
"source": [
"a = 1\n",
"a = a + 1\n",
"a += 1\n",
"print(a)\n",
"a = 2\n",
"print(a)"
]
}
],
"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.11.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}