基础配置:
1)Python开发IDE为VScode;
2)Python版本为 3.7.8;
Python编码规范:https://www.runoob.com/w3cnote/google-python-styleguide.html
python3教程:https://www.runoob.com/python3/python3-tutorial.html
1、概念简介
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
- 解释性:Python在开发过程中没有编译这个环节;
- 交互性:Python开发过程中可以在Python 提示符 >>> 后直接执行代码,获取执行结果;
- 面向对象:Python支持面向对象的风格或代码封装在对象的编程技术;
2、Python开发
2.1、字符集
1)字符集设置
Python中默认的编码格式是 ASCII 格式,在没有设置字符集的情况下中文显示会乱码。
解决方法为只要在文件开头加入
#!/bin/bash/python3
# -*- coding: UTF-8 -*-
或者
# coding=utf-8
说明:这里 coding 后的 # 左右两边不能有空格;
2.2、Python语法
2.2.1、基本规范
0)变量定义
Python中变量无需申明,在变量被赋值后才会被创建;
变量本身没有类型,变量指向的对象才有类型;
1)标识符
- 第一个字符必须是字母表中字母或下划线 _ ;
- 标识符的其他的部分由字母、数字和下划线组成;
- 标识符对大小写敏感,即变量区分大小写;
2)注释
单行注释:以 “#” 开头;
多行注释:如下
---格式一:
'''
该段为代码说明
该段为代码说明
'''
---格式二:
"""
该段为代码说明
该段为代码说明
"""
3)多行语句
当一行代码过长时,可以使用 反斜杠 “” 来换行
str_list="Hello World!"+ \
"Today is Sunday!"
python会将 ()、[ ]、{ }中的内容隐式的连接起来
total = ['item_one', 'item_two', 'item_three',
'item_four', 'item_five']
4)多个变量赋值
a = b = c = 1
a, b, c = 1, 2, "Hello"
2.2.2、数据类型
Python3 中有六个标准的数据类型:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
可以使用如下2个函数 来判断和确定对象所属类型;
type(obj)
和 isinstance(obj,type)
1)数值型
Python 支持三种不同的数值类型:
- 整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用;
- 浮点型(float) - 浮点型由整数部分与小数部分组成;
- 复数(complex) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
数值型内置函数:
int(x) #将x转换为一个整数。
float(x) #将x转换到一个浮点数。
complex(x) #将x转换到一个复数,实数部分为 x,虚数部分为 0。
complex(x, y) #将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y
- 数据型不可变,指对象值不可变,而非变量引用的对象不可变;
>>>
>>> new_int=9
>>> new_int=10
>>>
- 布尔型
强调:0、空字符串、空列表、空元组、空字典、空集合、None、False 的 布尔值为 False;
>>> bool_t , bool_f = True,False
>>> print (bool_t,bool_f)
True False
>>> type(bool_t)
<class 'bool'>
>>>
>>> isinstance(bool_f,bool)
True
>>> bool(0)
False
>>> bool(100)
True
>>> bool(-5)
True
>>>
2)字符串
- 字符串标识
说明:可以使用 单引号或双引号标识字符串 - 字符串连接符
字符串可以用 + 运算符连接在一起,用 * 运算符重复。 - 字符串索引
Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。 - Python中的字符串不能改变。
- 字符串截取
字符串的截取的语法格式如下:变量[头下标:尾下标:步长] - print输出默认换行,如果无需换行,可以加 end=" "
str_testA="Hello"
str_testB='Hello'
str_testC="Hello"+" World!" #字符串拼接
print("="*30,"over","="*30) #字符串重复
print(Str_testD, end=" " ) #输出不换行
print ("我叫 %s 今年 %d 岁!" % ('旅行者', 10))
- var_A[start_ind, end_ind]:截取区间为左闭右开;
字符串的一些基本函数:
str_a="Hello World!"
print(str_a.upper()) #字符串大写转换
print(len(str_a)) #字符串长度
list_a=[3,5,9,23,55]
print(min(list_a)) #列表最小值
3)列表(List)
- 列表是写在方括号 [] 之间、用逗号分隔开的元素列表。
- 列表中元素的可以是不同的数据类型,它支持数字,字符串甚至可以包含列表(所谓嵌套);
- 列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
- 与字符串不同的是,列表中的元素是可以改变的;
- 列表可以使用 + 号操作符进行拼接
str_A=["aaa","bbb","ccc","ddd","eee",'fff']
str_B=["ggg","hhh"]
str_C=["mmm","jjj"]
print(str_A[1:3])
print(str_B+str_C)
str_A[2]="hhh" # 更新列表元素
del str_A[2] # 删除列表元素
len(str_A) # 求列表长度
使用range函数初始化列表:
>>> list_A=list(range(0,20,3))
>>> print(list_A)
[0, 3, 6, 9, 12, 15, 18]
>>>
4)元组(Tuple)
- 元组是写在方括号 ( ) 之间、用逗号分隔开的元素列表。
- 元组中元素的可以是不同的数据类型;
- 元组同样可以被索引和截取,被截取后返回一个包含所需元素的新元组。
- 与字符串相同的是,元组中的元素是不可以改变的;
- 元组可以使用 + 号操作符进行拼接;
- 构造包含 0 个或 1 个元素的元组有一些额外的语法规则:
str_A=("aaa","bbb","ccc","ddd","eee",'fff')
str_B=("ggg","hhh")
str_C=("mmm","jjj")
print(str_A[1:3])
print(str_B+str_C)
str_tup1 = () # 空元组
str_tup2 = (20,) # 一个元素,需要在元素后添加逗号
说明:元组的不可变是指元组元素的指针不可变,而非元素的对象内容不可变;
>>>
>>> tuple_a=('aaa','bbb','ccc','ddd','eee')
>>> tuple_a=(123,456,789)
>>> tuple_a[1]='hhh'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>
- 元组中元素不可变,但是可以包含可变对象,如list对象:
>>> tuple_b=("A",["L1","L2","L3"],"C","D","E")
>>> print(tuple_b)
('A', ['L1', 'L2', 'L3'], 'C', 'D', 'E')
>>>
>>> tuple_b[1][2]="L5"
>>> print(tuple_b)
('A', ['L1', 'L2', 'L5'], 'C', 'D', 'E')
>>>
5)集合(Set)
- 使用大括号 { } 或者 set() 函数创建集合;
- 创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典;
- 使用set() 创建的集合最多能包含一个参数;
- 集合是一个无序的、元素不重复的序列;
str_setA={"aaa","bbb","ccc"}
str_setB=set('abcd')
str_setC=set(("aaa","bbb","ccc","ddd"))
6)字典(Dictionary)
- 字典当中的元素是通过键来存取的,而不是通过偏移存取。
- 字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
- 字典的key必须为不可变类型,且不能重复。
- 创建空字典使用
{ }
或者dict()
; - 字典类型也有一些内置的函数,例如clear()、keys()、values()等。
>>>
>>> str_dictA={"aa":"Hello","bb":"World","cc":70}
>>> print(str_dictA)
{'aa': 'Hello', 'bb': 'World', 'cc': 70}
>>> print(str_dictA.keys())
dict_keys(['aa', 'bb', 'cc'])
>>> print(str_dictA.values())
dict_values(['Hello', 'World', 70])
>>>
2.2.3、运算符
1)成员运算符
- in:x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
- not in:如果 x 不在 y 序列中返回 True。
>>> str_setA={"aaa","bbb","ccc"}
>>> if ("aaa" in str_setA):
... print("对象aaa在集合str_setA中")
... else:
... print("对象aaa不在集合str_setA中")
...
对象aaa在集合str_setA中
>>>
2)身份运算符
- is:判断两个标识符是不是引用自一个对象,如果是返回True,否则返回False;
- is not:判断两个标识符是否引用自不同对象,如果是返回True,否则返回False;
id()函数可以获取变量引用的对象内存地址;
>>>
>>> str_a="ppp"
>>> str_b="ppp"
>>>
>>> if (str_a is str_b):
... print("str_a 和 str_b引用的为同一对象!")
... else:
... print("str_a 和 str_b引用的为不同对象!")
...
str_a 和 str_b引用的为同一对象!
>>>
>>> if (id(str_a)==id(str_b)):
... print("str_a 和 str_b指向的对象内存地址相同!")
... else:
... print("str_a 和 str_b指向的对象内存地址不同!")
...
str_a 和 str_b指向的对象内存地址相同!
>>>
is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。
暂无
3)x** y
描述:表示 x 的 y 次方;
>>>
>>> 2**3
8
>>>
2.2.4、逻辑控制
1)条件控制
if 条件控制语法格式:
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
实际代码:
dog_age=int(input("请输入宠物狗年龄:"))
if dog_age <= 0:
dog_age("你是在逗我吧!")
elif (dog_age >= 1 and dog_age < 5):
print("相当于 10 岁的人。")
elif (dog_age >= 5 and dog_age < 10):
print("相当于 50 岁的人。")
else:
print("The age of your pet is out of range!")
说明:
- 每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
- 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
- 在Python中没有switch – case语句。
- if 的判断逻辑是从上往下执行,如果在某个判断上是True,把该判断对应的语句执行后,剩下的elif和else将被忽略;
2)循环控制
- for 循环格式:
for <variable> in <sequence>:
<statements>
else:
<statements>
说明:for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
实际代码:
>>> var_list=["aa","bb","cc","dd","ee"]
>>> for x in var_list:
... print(x)
... else:
... print("对象遍历完成,退出循环!")
...
aa
bb
cc
dd
ee
对象遍历完成,退出循环!
>>>
- 退出多层循环
退出多层循环,在 Python中可以使用 bool 标记变量,当满足某种条件时 改变 bool 变量值为 False;
loopFlag = True
for x in range(1,11):
print("x-->:",x)
for y in range(1,x+1):
if y >=5:
loopFlag = False
break
else:
print(" ".rjust(4),"y-->:",y)
if not loopFlag:
print("内层循环达到阈值上限,退出循环")
break
- while循环格式:
sum ,var_n ,end_n = 0,1, 100
while (var_n <= end_n):
sum+=var_n
var_n+=1
print("1 到 %d 之间的整数之和为:%d"%(end_n,sum))
说明:Python中没有do while语法;
- while else循环格式
>>> var_n ,end_n = 1, 5
>>> while (var_n <= end_n):
... print(var_n,"值小于等于上限%d,递增操作"%end_n)
... var_n+=1
... else:
... print(var_n,"值大于上限%d,退出循环"%end_n)
...
1 值小于等于上限5,递增操作
2 值小于等于上限5,递增操作
3 值小于等于上限5,递增操作
4 值小于等于上限5,递增操作
5 值小于等于上限5,递增操作
6 值大于上限5,退出循环
>>>
3)其他遍历序列
>>>
>>> for x in range(0,20,3):
... print(x)
... else:
... print("对象遍历完成,退出循环!")
...
0
3
6
9
12
15
18
对象遍历完成,退出循环!
>>>
说明:遍历数字序列,可以使用内置range()函数
- pass语句用法
if (1 <= 10):
pass
print("1<=10 为True!")
说明:pass是空语句,是为了保持程序结构的完整性,pass 不做任何事情,一般用做占位语句;
4)Break 和 Continue 的使用
说明:
-
break 语句可以跳出 for 和 while 的循环体,任何对应的循环 else 块将不执行。
-
continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
2.2.5、转义字符
- \\
- \r
功能:将 \r 后面的内容移到字符串开头,并逐一替换开头部分的字符,直至将 \r 后面的内容完全替换完成。
>>> print("Hello world! \rI am coming!"
... )
I am coming!
>>>
r"$v_string"
r置于字符串的前面可以禁止字符串里的特殊符号转义保持原字符串内容;
>>>
>>> print("hello\tworld!",r"hello\tworld!")
hello world! hello\tworld!
>>>
b"$v_string"
说明:字符串前面加 b 表示将 字符串转换为bytes
类型;
================================ over ========================================
下一篇: