Python学习一
1. 变量
序
- 假如我想要频繁的使用一个数据,如果这个数据过于庞大,我每次用到这个数据就把这个数据复制过来,那么是不是会显得代码变得特别乱。这时我们就需要用到变量。
- 通俗的来讲变量就等于一个万能盒子我把一个数据装进变量中,等我想用这个数据的时候,我们可以调用这个变量。
1.1 如何声明变量
lux='鲁迅本人'
上述代码就是声明一个变量,
- lux—就是变量名
- = — 就是赋值号
- '鲁迅本人'—就是变量值
赋值运算
在数学中,=是等号代表比较两边是否相等,
但在我们python中,==才代表等于的意思,而一个是代表赋值运算
x = 50+50
print(x) #结果 100
print(x==X) #结果 True
看到赋值号的话,先计算等号右边的,再将右边的值赋给等号左侧
1.2 什么是变量?
把程序运行的中间结果临时的存在内存里,以便后续的代码调用
-
'''所谓回忆者,虽说可以使人欢欣,有时也不免使人寂寞,使精神的丝缕还牵着已逝的寂寞的时光,又有什么意味呢,而我偏苦于不能全忘却,这不能全忘的一部分,到现在便成了《呐喊》的来由。 “我感到未尝经验的无聊,是自此以后的事。我当初是不知其所以然的;后来想,凡有一人的主张,得了赞和,是促其前进的,得了反对,是促其奋斗的,独有叫喊于生人中,而生人并无反应,既非赞同,也无反对,如置身毫无边际的荒原,无可措手的了,这是怎样的悲哀呵,我于是以我所感到者为寂寞。”''' print('''所谓回忆者,虽说可以使人欢欣,有时也不免使人寂寞,使精神的丝缕还牵着已逝的寂寞的时光,又有什么意味呢,而我偏苦于不能全忘却,这不能全忘的一部分,到现在便成了《呐喊》的来由。 “我感到未尝经验的无聊,是自此以后的事。我当初是不知其所以然的;后来想,凡有一人的主张,得了赞和,是促其前进的,得了反对,是促其奋斗的,独有叫喊于生人中,而生人并无反应,既非赞同,也无反对,如置身毫无边际的荒原,无可措手的了,这是怎样的悲哀呵,我于是以我所感到者为寂寞。”''') print(...) print(...) print(...)#太麻烦了我不想写
这是鲁迅先生的文章假如我想打印四次是不是每次的print()
都要放入这串数据是不是特别显的特别乱,这时我这样
a = '''所谓回忆者,虽说可以使人欢欣,有时也不免使人寂寞,使精神的丝缕还牵着已逝的寂寞的时光,又有什么意味呢,而我偏苦于不能全忘却,这不能全忘的一部分,到现在便成了《呐喊》的来由。 “我感到未尝经验的无聊,是自此以后的事。我当初是不知其所以然的;后来想,凡有一人的主张,得了赞和,是促其前进的,得了反对,是促其奋斗的,独有叫喊于生人中,而生人并无反应,既非赞同,也无反对,如置身毫无边际的荒原,无可措手的了,这是怎样的悲哀呵,我于是以我所感到者为寂寞。”''' print(a) print(a) print(a) print(a) # 是不是也可以实现同样的效果。 # 类似于上面代码的a的东西,在python中就称之为变量。
使用变量之前我们需要定义
1.3 定义变量的规则
-
变量只能由数字、字母、下划线组成
-
变量不能以数字开头。
-
变量不能是python中的关键字
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
-
变量具有唯一性
可以理解为我们这个叫做变量的小盒子只能存一个数据
name='红衣' name='超级飞侠' print(name) # 结果 # 超级飞侠
-
变量要具有描述性。
name='红衣' age=19 sex=1 #不会报错但是最好不要这样用 附:sex中文性别
-
变量建议使用驼峰体或者下划线连接,最好见名知意
2. 常量
-
引子
常量就是一直不变的量,不让改变的量。
for example
时间,就是一个常量,他就是不可改变的
那句话怎么说:若在许我少年时,一两黄金一两风。
如果你想在你的代码中设置一个不想改变的变量,就把他设为常量吧
ID = 1306041998343433132 CHINA_OF_BIRTHDAY = 20010430
3. 注释
-
引子
文言文中见过注释,一些晦涩难懂的成语、典故,会加一些注释。注解说明。程序中也会出现一些注释:
-
你写的代码或者别人写的代码比较精简,一眼看不出来,或者怕别人看不懂,可以加上注释。
-
函数、类、py文件的最上面会加注释。
-
-
语法
单行注释: # 多行注释: '''被注释内容''' """被注释内容"""
被注掉的代码,解释器会读取,但是不会执行。
所以注释最好精炼
4. 基础数据类型初识
-
引子
计算机底层都是由0和1组成的,所以啊我们不告诉计算机的话,他是分不清楚我们想输入的是汉字还是数字的区别
所以就会有个数据类型的东西用来替我们告诉计算机什么数据类型每个数据类型都有不同的作用。
4.1 整型
-
整形(int)
-
整数
for example:100,0,1,0,-1,-10,-100
-
因为是整数啊,所以他能用我们数学中的算数运算,以后再说干饭去
-
4.2 字符串类型
- 字符串类型(str)
4.2.1 什么是字符串类型
字符串字符串顾名思义就是把字符串起来,但是他们中可没有棍子啊!!!
要是说他的特征的话,就是用引号包起来的数。
- 单引号,双引号,三引号都可以
name1='红衣'
name2="红衣"
name3="""红衣"""
name4='''红衣'''
# 他们是一模一样的
-
三引号一般用于多行字符串
a = '''所谓回忆者,虽说可以使人欢欣,有时也不免使人寂寞,使精神的丝缕还牵着已逝的寂寞的时光,又有什么意味呢,而我偏苦于不能全忘却,这不能全忘的一部分,到现在便成了《呐喊》的来由。 “我感到未尝经验的无聊,是自此以后的事。我当初是不知其所以然的;后来想,凡有一人的主张,得了赞和,是促其前进的,得了反对,是促其奋斗的,独有叫喊于生人中,而生人并无反应,既非赞同,也无反对,如置身毫无边际的荒原,无可措手的了,这是怎样的悲哀呵,我于是以我所感到者为寂寞。”''' print(a)
-
字符串运算(累加,累乘)
-
累加
n = '红衣' y = '入天门' print(n+y) #结果:红衣入天门
-
累乘
n = '红衣' y = 2 print(n*y) #结果:红衣红衣
-
4.3 布尔类型
计算机表示对和错只有两种形式,因为之前说过计算机底层只有两种形式就是0和1,那么最简单就是用1代表True,0代表Flase
-
True
-
Flase
print(3>2) #True print(2>2) #Flase
5. 用户输入input
假如我们现在要和计算机沟通那就要—听我们说和他说出来。
简单来说
-
听我们说:就是input
-
他说出来:就是print
-
初识:
print(input())
# 当我们执行这条语句的时候,先执行print里的input,这时程序就会夯住,等待我们输入内容,并以回车键结束,这时input()就会获取到我们输入的内容,接着借用print打印出来
# 如果我们用一个变量接受input()的值
a=input()
print(a)
-
input出来的都是字符串类型
content = input('>>>') # print(content) # type方法,判断该数据是什么数据类型 print(content, type(content))
6. 流程控制语句-分支if
-
序
分支语句,
就像我的人生来到了岔路口两条路,去哪都可以
是不是分支有两种选择
生活中经常面临着选择,满足某种条件,我们就可以进行某种选择。程序中也会有这种选择。
-
单if
-
语法
if 表达式: 表达式成立执行代码块 python 当表达式成立时执行代码块,否则就不执行
-
-
if....else
-
语法
if 表达式: 表达式成立执行代码块 else: 表达式不成立执行代码块
-
-
if...elif..else
-
语法
if 表达式: 表达式成立执行的代码块 elif 表达式2: 表达式2成立执行的代码块 。 。 。 else: 表达式都不成立执行的代码块
-
-
你会发现,上面的if代码里,每个条件的下一行都缩进了4个空格,这是为什么呢?这就是Python的一大特色,强制缩进,目的是为了让程序知道,每段代码依赖哪个条件,如果不通过缩进来区分,程序怎么会知道,当你的条件成立后,去执行哪些代码呢?
在其它的语言里,大多通过
{}
来确定代码块,比如C,C++,Java,Javascript都是这样,看一个JavaScript代码的例子var age = 56 if ( age < 50){ console.log("还能折腾") console.log('可以执行多行代码') }else{ console.log('太老了') }
在有
{}
来区分代码块的情况下,缩进的作用就只剩下让代码变的整洁了。Python是门超级简洁的语言,发明者定是觉得用
{}
太丑了,所以索性直接不用它,那怎么能区分代码块呢?答案就是强制缩进。Python的缩进有以下几个原则:
- 顶级代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进
- 同一级别的代码,缩进必须一致
- 官方建议缩进用4个空格
7. 字符串格式化输出
-
引子
字符串格式化输出,主体还是字符串,这个方法使用于python中所有的字符串类型。
假如我现在有这样的需求
我需要一个打印一些员工卡
''' 姓名: 年龄: 职位: ''' #这时都一样,只有:后面的不一样,我要是一一复制会显的我很呆那我这时候可以用的字符串格式化
name=input('请输入名字') age=input('请输入年龄') job=input('请输入职位') a=''' 姓名:%s 年龄:%s 职位:%s ''' print(a %(name,age,job)) # %s 代表的就是一个占位符,运行的时候就是吧%s和后面的变量一一对应
%s
就是代表字符串占位符,除此之外,还有%d,是数字占位符, 如果把上面的年龄后面的换成%d,就代表你必须只能输入数字附:
小注意的点:
假如在字符串中%相当于一个占位符,那么我要是想输出%那
例子:
a="我是%s,现在%d岁了,走过人生20%路程了"
print(a%('红衣',20))
他就会显示这样的报错
这时候我们可以在那个%后面再加一个%,表示第一个%是对第二个%号的转译(先了解),就是告诉python这是一个%别给我当成占位符
8. 流程控制语句-循环while
循环:顾名思义啊就是循环呀!哈哈开个玩笑
不知道大家看过开端吗,那不就是一循环吗,还有呀吃饭睡觉打豆豆哈哈。
我们这次说的就是python中其中一个循环
8.1 while循环语法
while 条件:
循环体
# 当条件为真的时候执行循环体
# 当条件为假的时候则不执行循环体
来个简单的循环应用
while True: #我这里的条件是True,这就表示我会一直执行循环
print('抽烟')
print('喝酒')
print('打麻将')
可以去自己电脑试一下他会一直执行,
8.2终止循环
while里终止循环这里只说两种方法
- 第一种就是改变我们的条件,让条件不成立他自己就退出循环了
- 第二种就是用到我们break关键字
8.2.1 方法一
第一种我们在循环体中用一些方法吧条件改变了就像这样
flag=10
while flag == 10:
print('抽烟')
print('喝酒')
print('打麻将')
flag = 15
8.2.2 方法二
第二种就比较简单,循环体执行到break的时候他自动的跳出当前循环
while True:
print('爱你孤身走安详')
print('爱你不跪的模样')
break
print('打麻将')
# 结果:
# 爱你孤身走安详
# 爱你不跪的模样
还有一个小点,他是跳出当前循环的
while True:
print('抽烟')
print('喝酒')
print('打麻将')
while True:
break
print(1)
# 这样的话他还是会一直循环但是他不会打印1,
# 这就说明他只能跳出当前循环
8.3 while...else...
这个是啥意思啊,为啥多个else
和上面的if...else...大同小异,什么情况下会执行else
就是当if后面的条件不成立的时候执行else命令。
flag = True
while flag:
print('若在许我少年时')
flag = False
else:
print('一两黄金一两风')
我们每次循环不是都判断一下条件吗,当我们的条件成立时才继续执行循环,不成立不就是代表条件为假吗,那就执行else后面的东西,但是如果再循环中被break打断就说明我没判断条件,这是也不执行else后面的东西
flag = True
while flag:
print('若在许我少年时')
flag = False
break
else:
print('一两黄金一两风')
要是太复杂,我老师给我说过一个方法
如果while循环被break打断,则不执行else语句,否则就执行。
9. 基本运算符
算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算
9.1 算数运算
运算符 | 描述 | 例子 |
---|---|---|
+ | 加,两个变量相加 | a+b;结果9 |
- | 减,两个变量相减 | a-b;结果5 |
* | 乘,两个变量相乘 | a*b;结果14 |
/ | 除,两个变量相除 | a/b;结果3.5 |
// | 取整除,返回商的整数部分,把小数部分舍去 | a//b;结果3 |
% | 取模,返回除法结果的余数 | a%b;结果1 |
** | 平方,返回一个(n)的多少次幂 | a**b;结果49 |
9.2 比较运算
假设 a=7,b=2
运算符 | 描述 | 例子 |
---|---|---|
== | 等于 | a==b;结果Flase |
!= | 不等于 | a!=b;结果True |
<> | 不等于,在python2.n版本适用 | a<>b;结果True |
> | 大于 | a>b;结果True |
< | 小于 | a<b;结果Flase |
>= | 大于等于(注意等号是在右边的) | a>=b;结果True |
<= | 小于等于(注意等号是在右边的) | a<=b;结果Flase |
9.3 赋值运算
假设 a=7,b=2,c=10
运算符 | 描述 | 例子 |
---|---|---|
= | 简单的赋值运算符 | c=a,c的值为7 |
+= | 加法赋值运算符 | c+=a,c就等于c=c+a,c值为17 |
-= | 减法赋值运算符 | c-=a,c就等于c=c-a,c值为3 |
*= | 乘法赋值运算符 | c*=a,c就等于c=c*a,c值为70 |
/= | 除法赋值运算符 | c/=b,c就等于c=c/b,c值为5.0 |
%= | 取模赋值运算符 | c%=b,c就等于c=c%b,c的值为0 |
**= | 幂赋值运算符 | c**=b,c就等于c=c**b,c的值为100 |
//= | 取整除赋值运算符 | c//=b,c就等于c=c//b,c的值为5 |
9.4 逻辑运算
假设:x为False,y为True
运算符 | 描述 | 例子 |
---|---|---|
and | 逻辑与,如果and两边都为真(True),就返回真(True),否则返回假(False) | x and y,值为 False, |
or | 逻辑或,如果or两边有一方为真(True),就返回真(True),否则返回假(False) | x or y, 值为True |
not | 逻辑非,如果not 后的值为真(True),就返回假(False),简单来说就是取反 | not x ,值为True |
9.4.1 逻辑运算符的优先级
- 一般情况下,无()从高到低
- not > and > or
9.4.2 拓展
Flase=0
True=任何非零的数
x or y ,x为真的话返回x;x为假的话返回y
x and y,x为真返回y,x为假返回x
10 or 5 结果为10
0 and 7 结果为7
5.运算符的优先级
算数运算符 > 比较运算符 > 赋值运算符 > 逻辑运算符
10.编码
编码是信息从一种形式或格式转换到另一种形式的过程,见到来讲就是语言的翻译过程。
10.1 编码本
每一种我们写出来的字母、汉字、符号,计算机都不认识,所以把他转换成二进制的对应表就是编码本(自己理解的)
10.2 ASCll码
ASCII码(American Standard Code for Information Interchange,美国标准信息交换代码)
是最早使用的编码
ascll码:包含英文字母、数字、特殊字符与0101之间的对应关系
ASCll码:一个字符用一个字节表示
0 | NUL | 32 | (space) | 64 | @ | 96 | 、 |
---|---|---|---|---|---|---|---|
1 | SOH | 33 | ! | 65 | A | 97 | a |
2 | STX | 34 | ” | 66 | B | 98 | b |
3 | ETX | 35 | # | 67 | C | 99 | c |
4 | EOT | 36 | $ | 68 | D | 100 | d |
5 | ENQ | 37 | % | 69 | E | 101 | e |
6 | ACK | 38 | & | 70 | F | 102 | f |
7 | BEL | 39 | ' | 71 | G | 103 | g |
8 | BS | 40 | ( | 72 | H | 104 | h |
9 | HT | 41 | ) | 73 | I | 105 | i |
10 | LF | 42 | * | 74 | J | 106 | j |
11 | VT | 43 | + | 75 | K | 107 | k |
12 | FF | 44 | , | 76 | L | 108 | l |
13 | CR | 45 | - | 77 | M | 109 | m |
14 | SO | 46 | . | 78 | N | 110 | n |
15 | SI | 47 | / | 79 | O | 111 | o |
16 | DLE | 48 | 0 | 80 | P | 112 | p |
17 | DCI | 49 | 1 | 81 | Q | 113 | q |
18 | DC2 | 50 | 2 | 82 | R | 114 | r |
20 | DC4 | 52 | 4 | 84 | T | 116 | t |
21 | NAK | 53 | 5 | 85 | U | 117 | u |
22 | SYN | 54 | 6 | 86 | V | 118 | v |
23 | TB | 55 | 7 | 87 | W | 119 | w |
24 | CAN | 56 | 8 | 88 | X | 120 | x |
25 | EM | 57 | 9 | 89 | Y | 121 | y |
26 | SUB | 58 | : | 90 | Z | 122 | z |
27 | ESC | 59 | ; | 91 | [ | 123 | { |
28 | FS | 60 | < | 92 | \ | 124 | | |
29 | GS | 61 | = | 93 | ] | 125 | } |
30 | RS | 62 | > | 94 | ^ | 126 | ~ |
31 | US | 63 | ? | 95 | — | 127 | DEL |
GBK编码
GBK:只包含本国文字(已经英文字母,数字,特殊字符)与01对应关系
gbk:英文字母、数字、特殊字符用一个字节表示
中文用两个字节表示
Unicode编码
Unicode:包含全世界所有的文字与二进制01的对应关系
起初:Unicode一个字符用两个字节表示,因为远远不够
后来:Unicode:一个字符用4个字节表示
非常浪费工具
utf-8编码
UTF-8: 包含全世界所有的文字与二进制0101001的对应关系(最少用8位一个字节表示一个字符)
英文: 8位,1个字节表示.
欧洲文字: 16位,两个字节表示一个字符.
中文,亚洲文字: 24位,三个字节表示.