Python-从0开始

目录


python,从0开始学一下,顺便记个笔记

不要问为什么选择python
问就是工作需要!!!

python起源

1989年,为了打发圣诞节假期,Gudio van Rossum吉多· 范罗苏姆(龟叔)决心开发一个新的解释程序(Python雏形)
1991年,第一个Python解释器诞生
Python这个名字,来自龟叔所挚爱的电视剧Monty Python’s Flying Circus

python特点

简单、易学、开发效率高、适用面广

python环境安装在另一篇中有讲解点这里跳转

第一个python程序

向世界说你好,应该是全世界,所有程序员入门编程语言时,都会选择的第一个程序。
让我们也延续这一份来自程序员之间的浪漫,学习如何使用Python,向世界说你好。
我们的Python代码非常简单

print(“Hello World!!!”)

向屏幕输出(显示)Hello World!!!

python不像C/C++等,必须要头文件,但使用一些库的时候还是要引用出来

打印字符串加单引号或双引号都可以,数字直接输出,不用引号,自动添加换行
若不需要换行时,可这样写:print(“hello”, end=‘’)
加上end=''就不会换行

制表符 \t 当使用空格无法对齐时,就可以使用制表符

字面量

在代码中,被写下来的固定的值,称之为字面量

字符串

python中,字符串需要用双引号 " " 括起来
被引号包围的都是字符串

注释

注释不是程序,不能被执行,只是对程序进行解释说明,让别人看懂程序的作用,能够大大增加程序的可读性
单行注释 # ,#右侧内容不会被执行;建议在使用注释时,在#后面加个空格

name = "张三"  # 定义了一个值为张三的变量

多行注释:英文符号双引号 “”" “”"

"""
这里是多行注释
三个英文符号双引号
这里不会被程序执行
"""

变量

变量是在程序运行时,能储存计算结果或能表示值的抽象概念。简单的说,变量就是在程序运行时,记录数据用的

变量的特征

变量,从名字中可以看出,表示“量”是可变的。
所以,变量的特征就是,变量存储的数据,是可以发生改变的。

使用变量的目的

变量的目的是存储运行过程的数据,存储的目的是为了重复使用

print如何输出多份内容

print(内容1, 内容2...内容N)  # 直接输出就行,中间加上逗号

数据类型

前期先从基础的开始

类型 描述 说明
string 字符串类型 用引号引起来的数据都是字符串
int 整型(有符号) 数字类型,存放整数
float 浮点型(有符号) 数字类型,存放小数

type()语句

用来验证数据类型
直接输出

用变量存储


str是string的缩写

变量有类型吗

我们通过type(变量)可以输出类型,这是查看变量的类型还是数据的类型?
查看的是:变量存储的数据的类型。因为,变量无类型,但是它存储的数据有。

所谓字符串变量,不是说变量是字符串,而是它存储了 字符串
字符串定义一般有单引号’内容’ 双引号 “内容” 还有三个双引号 “”“内容”“”
这里的三个双引号和注释类似,支持换行操作。使用变量接收它,它就是字符串,不使用变量接收它,就可以作为多行注释使用。

字符串的引号嵌套

单引号定义法,可以内含双引号
双引号定义法,可以内含单引号
可以使用转移字符 \ 来将引号解除效用,变成普通字符串

字符串拼接

如果我们有两个字符串字面量,可以将其拼接成一个字符串,通过加号 + 即可完成

name_boy = "立花泷"
name_girl = "宫水三叶"
print("你的名字" +  name_boy + name_girl)

输出:你的名字立花泷宫水三叶

字符串格式化

拼接字符串时,如果变量太多,就会很麻烦,而且字符串和数字还不能拼接,那怎么办呢?
这里就可以通过字符串和变量来完成快速拼接

name_boy = "立花泷"
name_girl = "宫水三叶"
num = 2
name = "你的名字 %s %s %d" % (name_boy, name_girl, num)
print(name)

输出:你的名字 立花泷 宫水三叶 2

这里的%s
% 表示这个位置我要了
s 将变量变成字符串放入占位的地方

字符串无法和非字符串拼接,因为类型不一致,无法接上,就像接力赛一样,不是队友无法进行接力

多个变量占位,需要用括号将变量括起来,并按顺序填入
%s 将内容转换成字符串
%d 将内容转换成整数
%f 将内容转换成浮点型

这里是也可以通过%s来进行拼接数字,但是拼接的数字是自动转换为字符串类型的

字符串格式化-数字精度控制

我们可以使用辅助符号"m.n"来控制数据的宽度和精度
m 控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效
n 控制小数点精度,要求是数字,会进行小数的四舍五入

%5d:表示将整数的宽度控制在5位,如数字11,被设置为5d,就会变成:[空格][空格][空格]11,用三个空格补足宽
度。
%5.2f:表示将宽度控制为5,将小数点精度设置为2
小数点和小数部分也算入宽度计算。如,对11.345设置了%7.2f后,结果是:[空格][空格]11.352个空格补足宽度,小数部分限制2位精度后,小数部分四舍五入为.35
%.2f:表示不限制宽度,只设置小数点精度为2,如11.345设置%.2f后,结果是11.35

字符串格式化-快速写法

目前通过%符号占位已经很方便了,还能进行精度控制。

可是追求效率的Python,是否有更加优雅的方式解决问题呢?
答案是:有

通过语法:f"内容{变量}"的格式来快速格式化

name = "张三"
age = 100
birthday = 13.32
print(f"你的名字是{
     
     name}, 年龄是{
     
     age}, 生日是{
     
     birthday}")

输出:你的名字是张三, 年龄是100, 生日是13.32

这种写法不会做精确控制
也不理会类型
适用于快速格式化字符串

字符串格式化-表达式格式化

表达格式化是比上面两种更简便的写法
所谓表达式:一条具有明确执行结果的代码语句

1+1, 2*2 这就是表达式,因为有具体的结果,结果是一个数字

或者常见的变量定义:

name = "张三"  age = 11 + 11

等号右侧的都是表达式呢,因为它们有具体的结果,结果赋值给了等号左侧的变量。

直接格式化一个表达式:
print(f"22={22}")

print(“字符串在Python中的类型是:%s”% type(‘字符串’))

在无需使用变量进行数据存储的时候,可以直接格式化表达式,简化代码

类型转换

数据类型之间,在特定的场景下,是可以相互转换的,如字符串转数字、数字转字符串等

从文件中读取的数字,默认是字符串,我们需要转换成数字类型
后续在input()语句,默认结果是字符串,若需要数字也需要转换
将数字转换成字符串用以写出到外部系统

int(x) 将x转换成一个整数
float(x) 将x转换成一个浮点数
str(x) 将x转换为字符串

若是遇见无法转换的类型,比如字符串中有数字以外的类型,则无法转换为int类型,就会报错

浮点型转换整数会丢失小数点后的数字,也就是丢失精度

什么是标识符

在Python程序中,我们可以给很多东西起名字,比如:变量的名字
方法的名字类的名字,等等

这些名字,我们把它统一的称之为标识符,用来做内容的标识。

所以,标识符是用户在编程的时候所使用的一系列名字,用于给变量、类、方法等命名。

标识符命名规则

标识符命名中,只允许出现
英文、中文、数字、下划线_
这四类元素。

其余任何内容都不被允许。

这里不推荐使用中文

!!数字不能作为开头

大小写敏感

dog = "旺财"
Dog = "富贵"

一个字母的大小写是完全能够区分标识符的

不可使用关键字

Python中有一系列单词,称之为关键字关键字在Python中都有特定用途

这些关键字我们不可以使用它们作为标识符,会出问题

变量命名规范

学完了标识符(变量、类、方法)的命名规则后,在来学习标识符的命名规范。
变量名
类名
方法名
不同的标识符,有不同的规范

目前只接触到了:变量。所以,目前学习:变量的命名规范。
见名知意

明了:尽量做到,看到名字,就知道变量什么意思
简洁:在确保“明了”的前提下下,减少名字的长度

下划线命名法
多个单词组合的变量名,尽量使用下划线分隔

英文字母全小写
命名表变量中的英文字母,应全部小写

运算符

算数运算符

运算符 描述 实例
+ 两个对象相加 a+b 输出结果 n
- 得到两个数的差
* 两数相乘取得的结果
/ b/a输出结果,除法计算
// 取整除 返回商的整数部分 9//2 输出结果 4
% 取余 返回余数
** 指数 a**b意为a的b次方

赋值运算符

等号 = 把的能耗右边的结果 赋给 左边的变量,如num=1+2*3,结果num的值为7

复合赋值运算符

运算符 描述 实例
+= 加法赋值运算符 c+=a等效于c=c+a
-= 减法赋值运算符 c-=a等效于c=c-a
*= 乘法赋值运算符 c*=a等效于c=c*a
/= 除法赋值运算符 c/=a等效于c=c/a
%= 取模赋值运算符 c%=a等效于c=c%a
**= 幂赋值运算符 c**=a等效于c=c**a
//= 取整除赋值运算符 c//=a等效于c=c//a

获取键盘输入:input函数

input函数对应print函数是从键盘获取输入
使用一个变量接收input语句获取的键盘输入数据

print("Who are you?")
name = input()
print("I am " + name)


这里还可以简化写法,可以在要求使用者输入内容前,输出提示内容

name = input("Who are you?")
print("I am " + name)

判断语句

进行逻辑判断,是生活中常见的行为。同样,在程序中,进行逻辑判断也是最为基础的功能。

判断在程序中广泛应用,如果没有它,这些功能都难以实现

比如网站登录、APP登录、景区验票、车牌识别等

判断是程序最基础、最核心的功能

布尔型和比较运算符

判断真和假,也就是说只有是或者否两种结果
python中常用的6重数据类型

布尔类型的字面量:
True表示真(是、肯定)
False表示假(否、否定)

定义变量存储布尔类型数据:
变量名称=布尔类型字面量

布尔类型不仅可以自行定义同时也可以通过计算的来
也就是使用比较运算符进行比较运算得到布尔类型的结果

比较运算符

布尔类型的数据,不仅可以通过定义得到,也可以通过比较运算符进行内容比较得到。

result = 10 > 5
print(f"10 > 5的结果是:{
     
     result},类型是:{
     
     type(result)}")

# 输出:10>5的结果是:Ture,类型是:<class 'bool'>

if判断语句

判断嘛,是从 如果→动作 的运动方式
比如说,如果小美喜欢我,明天我就去表白

程序中写法

# if 要判断的条件:
# 条件达成时, 要做的事
grade = 70
if grade <= 90:
	print("考试结束")
	print("成绩不及格")
	print("请回中心打印成绩单")

这里判断条件就是要分数大于90
符合就执行后面的打印语句,不符合则直接跳过if和以下的这段打印代码

注意的点

判断语句的结果,必须是布尔类型True或FalseTrue会执行if内的代码语句
False则不会执行
归属于if断的代码语句块,需在前方填充4个空格缩进,也就是一个tab键
Python通过缩进判断代码块的归属关系,若前面没有空格或不符时则被编译器认为是if以外的代码,不会代入到判断语句内从而影响程序结果
判断条件后面的冒号不要忘记!

if else判断

当if无法满足判断需求的时候呢,else就冒出来了
这时候就变成了:如果→动作,否则→动作
比如说,如果小美喜欢我,明天我就去表白,否则我就去追求小新
程序中写法

grade = 70
if grade <= 90:
	print("考试结束")
	print("成绩不及格")
	print("请回中心打印成绩单")
else:
	print("考试结束")
	print("成绩合格")
	print("请回中心打印成绩单")

else后面不需要判断条件

这就是说,当你的判断条件满足时,就会执行,不满足时,就会 直接 执行另一个条件

和if一样,else也需要缩进四个空格

if elif else语句

这里是:如果1→动作,如果2→动作,如果N→动作,否则→动作
比如说,如果小美喜欢我,明天我就去表白,或者小甜喜欢我,明天我去表白,否则我就去追求小新
程序中写法

age = 16
height = 175
if age < 18:              # 1
	print("年龄太小了")
elif height < 180         # 2
	print("有点矮,不合适")
else                      # 3
	print("年龄或身高合格")
	print("已加入该社团")

这段代码如果执行的话就会报错
因为没有加 ’ : ’

elif语句可以写很多个,用来判断各种可能发生的事件
这段代码执行时,若1符合判断条件,进行输出后,则不会在执行2和3

1不满足但满足2时,执行2,不会执行3,1和2都不满足时,则进入else,也就是3

注意点:这里还是缩进,千万不要忘了!

tap

input语句也是可以写入判断中的,用来节省代码量

if int(input("请输入你的年龄:")) < 18:
	print("年龄太小")
else:
	print("年龄合适")

判断语句嵌套

在满足一项要求的前提下进行另一条要求的判断

这里就显出了缩进的关键性,通过缩进满足层次关系

if 条件1:
	满足条件1 做的事情1
	满足条件1 做的事情2
    if条件2:
		满足条件2 做的事情1
		满足条件2 做的事情2

这种情况下可以自由组合if elif else,完成特定的需求

循环语句

循环普遍存在于日常生活中,同样,在程序中,循环功能也是至关重要的基础功能。

循环在程序中同判断一样,也是广泛存在的,是非常多功能实现的基础:
像:循环广告牌、批量修图、视频轮播、音乐轮播、图片轮播、大喇叭喊话、动态壁纸等
循环是程序最基础、最核心的功能

举个例子,比如说:每天都像小美表白,知道成功为止
程序中,只要条件满足,就会无限循环执行

while循环

while 条件:
	满足时最的事情1
	满足时最的事情2
	满足时最的事情3
	满足时最的事情N
当第N次的时候,咱不说为啥,小美同意了,这时候跳出循环,循环结束

n = 0
while n = 101:
	print("小美,表白")
	n += 1
print("小美终于接受了你的表白")

这是一个美好的假设,从第0次开始,n每次加以用以计数,当程序执行到101次的时候,小美同意了;
但现实大多数都是:while True ……

1.while的条件需得到布尔类型,True表示继续循环,False表示结束循环

2.需要设置循环终止的条件,如i+= 1配合 i <100,就能确保100次后停止,否则将无限循环

3.空格缩进和if判断一样,都需要设置

while循环嵌套
while条件1:
	条件1满足时﹐做的事情1
	条件1满足时﹐做的事情2
	条件1满足时﹐做的事情3
	条件1满足时﹐做的事情N
	
	while条件2:
		条件2满足时,做的事情1
		条件2满足时﹐做的事情2
		条件2满足时﹐做的事情3
		条件2满足时﹐做的事情N

这里同判断语句的嵌套一样,循环语句的嵌套,要注意空格缩进
基于空格缩进来决定层次关系
注意条件的设置,避免出现无限循环(除非真的需要无限循环)

for循环

除了while循环语句外,Python同样提供了for循环语句。两者能完成的功能基本差不多,但仍有一些区别:

. while循环的循环条件是自定义的,自行控制循环条件

. for循环是一种”轮询”机制,是对一批内容进行”逐个处理”

生活中的for循环:
洗碗,一个一个洗净
剥大蒜,一个一个剥
送快递,一个一个送
吃瓜子,一个一个吃
等都是一个一个逐渐完成

程序中

for 临时变量 in 待处理数据集:
	循环条件满足时执行的代码

从待处理数据集中,逐个取出数据赋值给临时变量

name = "asdfghjkl"
for q in name:
	print(q)

运行结果:
a
s
d
f
g
h
j
k
l
可以看出,for循环是将字符串的内容:依次取出
所以for循环也叫做:遍历循环

同while循环不同,for循环是无法定义循环条件的。

只能从被处理的数据集中,依次取出内容进行处理。

所以,理论上讲,Python的for循环无法构建无限循环(被处理的数据集不可能无限大)

range语句

for l临时变量in待处理数据集(可迭代对象):
循环满足条件时执行的代码

语法中的:待处理数据集,严格来说,称之为:可迭代类型
可迭代类型指,其内容可以一个个依次取出的一种类型,包括:
字符串、列表、元组等

for循环语句,本质上是遍历:可迭代对象
这里用一个简单的数字序列举例(可迭代的类型的一种)

语法1:

range(num)
获取—个从0开始,到num结束的数字序列(不含num本身)如range(5)取得的数据是:[0,1,2,3,4]

语法2:

range(num1,num2)
获得一个从num1开始,到num2结束的数字序列(不含num2本身)
如,range(5,10)取得的数据是:[5,6,7,8,9]

语法3:

range(num1,num2,step)
获得一个从num1开始,到num2结束的数字序列(不含num2本身)
数字之间的步长以step为准(step默认为1)
如,range(5,10,2)取得的数据是:[5,7,9]

# for循环遍历range序列
for i in range(5)
	print(i)

输出:
0
1
2
3
4

练习:
算出1-100中有多少个偶数出现(不包含100)

num = 0
for i in range(1, 100):
    if i % 2 == 0:
        num += 1
print("偶数有%d个" % num)  # 49

for循环变量作用域

for 临时变量 in 待处理数据集:
循环满足条件时执行的代码

临时变量:

如果在for循环外部访问临时变量:在编程规范上,作用范围(作用域),只限定在for循环内部实际上是可以访问到的,但是不允许、不建议这么做的,因为没有意义

如果实在需要在循环外访问循环内的临时变量,可以在循环外预先定义

i = 0
for i in range(5):
	print(i)
print(i)

如上面代码,每一次循环的时候,都会将取出的值赋予i变量,由于i变量是在循环之前(外)定义的,在循环外访问i变量是合理的、允许的

for循环嵌套

就像在操场跑圈,需要跑10圈,每次跑完一圈之后都要做5个标记

for i in range(1, 11):
    print(f"这是第{
     
     i}圈,加油")
    for x in range(1, 6):
        print(x)
print("终于跑完了,真棒")

这里的缩进也是和while的一样,要多注意
输出:
这是第1圈,加油
1
2
3
4
5
这是第2圈,加油
1

5
这是第10圈,加油
1
2
3
4
5
终于跑完了,真棒

循环中断

continue关键字:中断本次循环,直接进入下一次循环

continue可用于:for循环和while循环,效果一致

就像每天都和小美表白,送一日三餐,直到成功
每天送餐的时候看小美脸色,今天不高兴就不送了,明天继续
通过代码实现小美心情

for i in range(1,101):
    print(f"追求小美的第{
     
     i}天,坚持......")
    print("给小美送早饭,比心")
    print("给小美送午饭,比心")
    if input(f"今天小美的心情好像(Q好心情,1坏心情)") == '1':
        print("小美心情不好,晚饭不送了,撤退......")
        print()
        continue                                                        
	print("给小美送晚饭,送小美回家并表白")
	print()

continue只能控制它所在的循环临时中断

break关键字

break关键字用于:直接结束所在循环
break可以用于for和while循环,效果一致
每天都去向小美表白,送一日三餐,直到成功
某天小美说,不要再打扰我了,以后就不要缠着她了
代码实现小美心情

for i in range(1,101):
    print(f"追求小美的第{
     
     i}天,坚持......")
    print("给小美送早饭,比心")
    print("给小美送午饭,比心")
    if input(f"如果你是小美,请告诉我你是否明确拒绝(0再观察观察,1不合适拒绝)") == '1':
        print("小美拒绝我了,以后不追求小美了。T.T")
        break                                                        
	print("给小美送晚饭,送小美回家并表白")
	print()

函数

函数是组织好的,可重复使用的,用来实现特定功能的代码段
使用函数的好处是:
将功能封装在函数内,可供随时随地重复利用
提高代码的复用性,减少重复代码,提高开发效率

函数的定义
def 函数名(传入参数):
	函数体
	return 返回值

函数的调用:
函数名(参数)

要注意:
参数如果不需要,可以省略
返回值如果不需要,可以省略
函数必须先定义后使用

函数的传入参数

传入参数的功能是:在函数进行计算的时候,接受外部(调用时)提供的数据

def add():
	result = 1 + 2
	print(f"1+2的结果是:{
     
     result}")

该函数的功能非常局限,只能计算1+2
有没有可以实现计算机去计算用户指定的两个数字呢?
有!使用函数传参功能,即可实现

函数传入参数 - 传参定义

基于函数的定义语法:

def 函数名(传入参数):
	函数体
	return 返回值

代码写法:

# 定义函数
def add(x, y<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值