写给wxy的python入门教程
❤️

写给wxy的python入门教程

Categories
Python
Text
爱她就教她Python~
Date
Jan 18, 2024

编程语言运行环境

无论是谁,想要学习一门编程语言,第一步都是在自己的计算机上搭建这门编程语言的运行环境。虽说用了搭建这个词,听起来似乎非常复杂,非常的高大上,但实际上不过是下载了一些初学者不太懂的东西,不妨把它理解为一个个软件。那么所谓的搭建编程语言运行环境就可以简单理解为在你的计算机里下载了几个软件,仅此而已。

为什么需要有编程语言运行环境?

这个问题涉及到一个基本的知识:计算机只能运行01二进制码。这句话的基本解释是,你在电脑中的任何操作,如鼠标点击一下、打开某个软件等等实际上都是你的电脑在运行一段01二进制码。或许有点难懂,但我们可以用初高中函数的思想来简单化这个概念: f(电脑操作) = 一段01二进制码 比如你用计算器计算1+2,会对应着电脑运行00101011这段01二进制代码(举个例子)。这样一个函数关系就形成了,电脑操作是自变量,01二进制代码是应变量。
为什么要说上面这么多东西呢,因为实际上电脑操作编程语言是等价的,在计算器这个软件中可以计算1+2,也可以使用python编程语言实现计算1+2,在python代码中一行就可以实现:
x = 1 + 2
运行以上python代码的结果就是x这个变量被赋上了3这个数字值(之后介绍python语法的时候再详细介绍)。也就是说编程语言=电脑操作,那么之前的那个函数就可以修改为: f(编程语言代码) = 一段01二进制码 敲黑板~~(接下来是重点):编程语言运行环境就是函数f,编程语言运行环境起到了将编程运行代码转化为01二进制代码的功能。有了编程语言运行环境你的电脑才可以运行代码(说了这么多其实总结起来就这一句话)。

实操:开始搭建python运行环境

Ananconda

Ananconda是python环境搭建中一个绕不开的工具,解释Anaconda的重要性就需要理解软件的版本这一概念。听起来是一个很高级的概念,确实很高级,但也很容易懂。举个例子:朱老师要做两个用python写的项目,一是给小学生做一个计算器,二是给中学生做一个计算器。朱老师没有同时做两个项目,而是打算先做小学生的计算器,之后在小学生计算器的基础上添加一些功能来实现中学生的计算机。为此朱老师写了一个给小学生用的计算器(里面实现了加减乘除运算),朱老师把这个给小学生用的计算器称为“计算器1.0”,之后呢朱老师又向这个计算器里添加了sin、cos计算和虚数运算,这样就可以给中学生用了,朱老师将增加功能后的计算器称为“计算器2.0”。噔噔,朱老师实现了计算器的版本更新。
那么,请聪明的wxy想一想,在上面这个故事里有没有隐藏着什么问题呢?
如果朱老师觉得中学生很厉害,什么数的加法都应该可以口算出来,根本不需要使用计算器来计算加法,把计算器2.0中的加法功能去除了怎么办,这样就导致了一个问题:就是在低版本里拥有的功能在高版本里反而没有了。这样就会产生版本冲突,那就是使用高版本的用户想使用低版本的功能时发现无法使用。其实版本冲突的含义远不止这些,但从上面这个例子就可以看出,软件版本这个概念非常重要,直接关系到软件能否正常运行。
为此,Anaconda提供了一个解决方案:以项目为管理单位,每个项目使用自己要使用的软件版本,项目与项目之间相互独立,互不冲突,甚至每个项目使用的python版本也不同(python也是会有版本迭代的,只要是软件都会有,没有人能一开始就做的尽善尽美)。这样,python的使用者就可以使用不同版本的python乃至python库了(之后再介绍python库是什么)。

VSCode的安装

VSCode是一个集成开发环境(Integrated Development Environment)。集成开发环境是什么?
实际开发中,我们往往需要很多其他辅助软件来帮助我们写代码,例如:
编辑器:用来编写代码,并且给代码着色,以方便阅读;
代码提示器:输入部分代码,即可提示全部代码,加速代码的编写过程;
调试器:观察程序的每一个运行步骤,发现程序的逻辑错误;
项目管理工具:对程序涉及到的所有资源进行管理,包括源文件、图片、视频、第三方库等;
漂亮的界面:各种按钮、面板、菜单、窗口等控件整齐排布,操作更方便。
这些工具通常被打包在一起,统一发布和安装,你可以把它想象为一个word,可以让你更方便地编写代码,
而VSCode就是这样一个集成开发环境,它相比于其他的集成开发环境更加轻便。
 

Hello,world

学习任何编程语言的第一步(搭好编程环境后)一定是尝试输出Hello world,它可以验证编程环境是否搭建完成,同时也是学习一门编程语言语法开始的地方。python的Hello world程序如下:
print("Hello world!")
非常简洁,只有一行代码,即可实现在终端输出Hello world!
这个程序实际上只有一行,使用了一个函数:print(),函数是编程中一个非常重要的概念,我们先将这个概念放一放,现阶段只需要知道print()函数的作用是将括号内的东西打印到终端。(不知道你懂不懂“打印到终端什么意思,不懂到时候记得问”)

变量

变量,一个编程中和函数同样重要的概念。变量变量,重点在于会变,你只要命名了一个变量,就可以给它赋上任何值(python里是这样,其他编程语言并非如此)。变量是由你创造出来的事物,你想让它是什么就是什么(你可以随时改变它的值)。但是呢,也不是那么随意的,你不能直接用“x=人”这句代码来让x代表一个人,实际上确实有方法来让x代表一个人,但是那需要一些更高级的语法,而更高级的语法是由低级语法一步步扩展得到的,下面我们来看看低级语法是什么样的,看看x在最低层级上可以表达什么,有哪些东西是最基础的,可以用这些基础的东西来逐步表示诸如“人”这样的高级概念
到这里停一下,请聪明的你动动脑筋,可能会有哪些“基础变量”,提示一个思路:需要表示一个人需要哪些东西?人有年龄、性别、姓名、身高等等属性,要表示这些东西需要哪些东西来描述它们呢?

数字

聪明的你应该想到了,是数字,数字是描述这个世界必不可少的工具,编程语言要想描述这个世界也需要数字。python中对于数字的处理做的非常好。你只需要像做数学题一样把计算过程写出来就可以使用数字了,举个例子:
x = 5print(x) y = 3.14print(y) height = 5weight = 2print(height + weight) # 加法print(height - weight) # 减法print(height * weight) # 乘法print(height / weight) # 除法x = 2y = 3print(x ** y) # 幂运算,2的3次方是8print(a % b) # 取余运算,2除以3的余数为2BMI = weight/(height**2) print(BMI)
上面就是一些基本的python数字运算啦你可能会好奇,为什么要单独举个例子“y = 3.14”,实际上,小数在编程语言中有个专门的概念叫浮点数,至于为什么叫浮点数,这个涉及到计算机底层的知识,如果你感兴趣的单独问我。浮点数在其他编程语言中会有明细的划分,但在python中,你只需要把它和整数当成一个概念就行,当成数字来用就ok。
你应该注意到了,朱老师上面用了weightheight这两个变量名,朱老师是怕你产生一个一个误解,认为变量的名字只能用x、y这种字母,实际上,变量名的作用是方便编程人员的阅读,所以变量名设计的原则就是要一眼可以读懂变量所代表的东西,比如使用了weight这个变量名,那么别人一看到就知道,这个变量中存的是体重,那么这个weight中存的应该是数字,而不是其他东西。
像“+- */”这些东西在python中称为运算符,顾名思义,是用来运算的,配合着数字变量使用就可以实现算数运算。

有关数字的小练习

海伦公式是由古希腊数学家海伦(Heron)提出的,用于计算三角形的面积。海伦公式可以表示为:
$$ A = \sqrt{s(s-a)(s-b)(s-c)} $$ 其中,A表示三角形的面积,a、b 和 c分别表示三角形的三条边的长度,s表示半周长,即三角形的三条边的和的一半。海伦公式提供了一种计算任意三角形面积的方法,而不需要知道三角形的高度或底边。这使得海伦公式在实际应用中非常有用,特别是当我们只知道三角形的三个边长时。
请你写一个python文件area.py。要求实现功能:输入三角形的三条边长,在终端输出三角形的面积(已知输入的三边一定可以构成三角形)
提示:如何在终端输入一个数字并将这个数字赋值给某一变量呢?
a=int(input("请输入a的值:"))
上述代码将会在终端产生“请输入一个数字:”这句话,你只需要在这句话的后面输入一个数字,再按一下回车键,就可以让a被赋值。比如,你输入6,再按回车键,这样a就被赋值6,聪明的你应该感觉到了,这样的话实际上等价于运行 a = 6 这句代码。朱老师怕你还不懂,那么试试以下代码吧:
a=int(input("请输入a的值:")) print(a)
开根号运算如何实现
# 开根号运算result = 16 ** 0.5print(result) # 输出:4.0

字符串

那除了数字还有什么呢,是“文字”,我们需要用文字来描述这个世界。在Python中使用字符串来达到文字的作用,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号
"This is a string."'This is also a string.'

变量的命名与使用

在Python中,变量的命名需要遵循一定的规则,只要不违反这个规则,随你怎么命名:
  1. 变量名只能包含字母(大小写均可)、数字下划线(_),不能包含空格或其他特殊字符。
  1. 变量名不能以数字开头,但可以在开头包含下划线。
  1. 变量名区分大小写,例如”myVariable“和”myvariable“是两个不同的变量。
  1. 避免使用Python关键字和内置函数名作为变量名,这样可以避免与Python的语法冲突。例如,不要使用”print“等作为变量名。
以上是一些python命名的硬规则(不能违反,违反就会出错),下面是一些增强代码可读性的建议:
  1. 变量名应该具有描述性,能够清楚地表达变量的含义。这样可以提高代码的可读性和可维护性。(不要再用简单的x、y了哦)。
  1. 通常使用小写字母和下划线的组合来命名变量,例如”my_variable“。通过下划线将单词分开。
  1. 对于常量(不会被修改的变量),通常使用全大写字母和下划线的组合来命名,例如”PI”(圆周率π)。
需要注意的是,虽然Python对变量名的长度没有明确限制,但为了代码可读性,建议使用简洁而有意义的变量名。比如要用一个变量存储长度,可以不用length整个单词,用len三个字母也行。

逻辑语句

if语句

还记得之前写过的求三角形面积的小作业吗,当时朱老师留下了一个疑问:如果程序输入的三条边无法构成三角形怎么办(有可能输入的是负数,也有可能输入的三个正数不能构成三角形)?接下来朱老师将会告诉你处理办法,首先我们来思考一下之前的代码是怎么执行的,是一行一行执行的,如果前面一行的代码报错了,那么程序将会终止,你所写的程序运行完指的就是你写的x行代码全部运行完成。那么这就产生一个问题,为什么一定要运行所有的代码呢,我为什么不能有选择地运行我想运行的代码呢,我其实可以做一个检查,检查到三条边不能构成三角形就直接停止程序。那么接下来我们就让if语句隆重登场。我们还是用求三角形面积这个例子
a = float(input("请输入a的值:")) b = float(input("请输入b的值:")) c = float(input("请输入c的值:")) # 检查是否可以构成三角形if a<=0 or b<=0 or c<=0: print("请输入正数") elif a + b > c and a + c > b and b + c > a: # 可以构成三角形 s = (a + b + c) * 0.5 d = s * (s - a) * (s - b) * (s - c) result = d ** 0.5 print(result) else: print("输入的三条边不能构成三角形")
让我们来详细讲讲以上代码:(首先说一句,我接下来所说的“if语句”包括上面代码中的ifelifelse
我们先抓住重点:if语句的作用是按照一定的条件运行我们想要程序运行的代码
上面这句话其实隐藏着一个点,那就是:一个条件对应一段代码,当满足一个条件时,就会执行一段代码。
那么在三角形判断这个问题中会出现三种情况,每种情况对应执行不同的代码:
  1. 输入的边中有负数 ——》 输出“请输入正数”
  1. 输入的三条边可以构成三角形 ——》 使用海伦公式计算面积
  1. 输入的三条边虽然是正数但无法构成三角形 ——》 输出“输入的三条边不能构成三角形”
首先要说明一下ifelifelse的含义:三者中的ifelif后面都需要跟判断条件,一旦条件满足就会执行相应的代码,需要知道的是,if一定在elif之前,且只可以有一个if,而elif可以有无数个,而else一定在最后且只有一个,只有当前面的ifelif的条件都没有被满足时,else的对应代码才会被执行,也因此else的后面不需要加判断条件。请注意,所有的ifelifelse后面都需要加冒号。还有一点:那就是无论有多少个elif加上一个if和else,只会执行一个代码段,举个例子,如果在某个elif处条件被满足了,那么无论后面的elif的条件是否满足都不会再执行了。
我们来看每个条件怎么表示:
1.输入的三条边可以构成三角形:a + b > c and a + c > b and b + c > a
这个条件的表示中a + b > c你应该可以看懂,其实a + b > c本身就是一个子条件,就是这个and会不懂,其实很简单,用and可以将不同的条件连接起来,也就是说,只有当and连接的所有子条件都满足了,这个if后面的大条件才算被满足。举个例子:输入的三角形的三条边为1、2、3,分别为a、b、c,b+c>a的条件满足了,但是呢a + b > c并没有被满足,所以与if对应的代码不会被执行。
2.输入的边中有负数:a<=0 or b<=0 or c<=0(请注意小于/大于等于需用<=/>=,没有单独的一个符号表示小于/大于等于)
and不同,or没有那么苛刻,只要用or连接的子条件中的任意一个被满足了,那么这整个大条件都被满足了,在这个例子中,只要这三条边中的任意一个小于等于0了,elif就会被触发
聪明的你会注意到,上面的代码我中有一些行被我“往后面”移动了,这个“移动”呢叫做:缩进。缩进也是python语法的一部分,如何体现某几行代码属于某个if语句呢,那就是看它后面那几行代码缩进了,这个缩进的长度是固定的:四个空格,也就是一个Tab键(键盘的左上方附近)。

if语句练习题

题目:成绩等级判断
问题描述: 编写一个程序,根据输入的成绩判断学生的等级。成绩的等级划分如下:
  • 90分及以上为优秀(Excellent)
  • 80分及以上为良好(Good)
  • 70分及以上为中等(Average)
  • 60分及以上为及格(Pass)
  • 60分以下为不及格(Fail)
要求用户输入一个整数表示学生的成绩,并根据成绩输出相应的等级
示例输出:
请输入学生的成绩: 75 成绩等级: Average
解题思路:
  1. 使用input()函数获取用户输入的成绩,并将其转换为整数类型。
  1. 使用嵌套的if语句判断成绩的等级,并根据不同的条件输出相应的等级。

循环语句

函数

面向对象编程

 

Python的面向对象

继承

# 子类调用父类方法,比如init等 super.父类方法(子类, self)
 

类中的__enter____enter__

__enter____enter__ 与python的上下文管理机制有关,概括一下就是__exit__和__enter__函数是与with语句的组合应用的,用于上下文管理。
__enter__负责返回一个值,该返回值将赋值给as子句后面的var_name,通常返回对象自己,即“self”。函数优先于with后面的“代码块”(statements1,statements2,……)被执行。
class TmpTest: def __init__(self,filename): self.filename=filename def __enter__(self): self.f = open(self.filename, 'r') return self.f def __exit__(self, exc_type, exc_val, exc_tb): self.f.close() test=TmpTest('file') with test as t: print ('test result: {}'.format(t))
开发库时,清理资源,关闭文件等等操作,都可以放在 __exit__ 方法当中。因此,Python的with语句是提供一个有效的机制,让代码更简练,同时在异常产生时,清理工作更简单。

Python中的None

None的本质是一个对象,用来表示某个变量没有被赋值
NoneNoneType 的唯一实例