PyCourse/入口.ipynb

692 lines
15 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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