文章目录
Python语言概述及基础部分
1、Python下载
Python下载:https://www.python.org/downloads/windows/
Pycharm下载:https://www.jetbrains.com/pycharm/download/#section=windows
2、了解语言:
- python 是一种解释型语言:即意味着不用编译可以直接执行。
- Python是交互式语言 : 即在python提示符>>>后直接执行代码
- Python是面向对象语言 :即意味着python支持面向对象的风格或代码封装在对象里的编程技术。
- 标识符:
- 字母、数字、下划线组成,对大小写敏感。
- 第一个字符必须是字母表中字母或下划线_.
- 保留字:
import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
3、基础语法与命令
-
查看版本: python -v
-
查看基本参数信息: python -h
-
单行注释 :#
-
多行注释:```或 " " "
行缩进,就是python的基本语法,缩进的空格数是可变的。缩进不一致会导致程序运行错误。
多行语句,可以通过反斜杠 \ ,在[],{}或()中不需要用到反斜杠。
- 查询函数库
import sys
dir(sys)
- 设置字体
Options —>Config IDLE
- 运算直接输入
4、数字和表达式
表达式:由运算符和操作数按照语法形式组成的字符序列。
+加,-减,/除,*乘,%取模,**求幂
0X表示16进制,0表示8进制
数值的除法包含两个运算符: /返回一个浮点数,// 返回一个整数
print(3+2)# 5
print(4/2)# 2.0
print(5-2)# 3
print(3*2)# 6
print(5%3)# 2
print(2**3)# 8
5、变量语句与函数
- 变量:就是一个能存储数据的容器。变量命名:不能数字开头,中间不能有空格。
input输入函数,raw_input输入一行
x = 3
y = 6
print(x)# 3
print(y)# 6
# input接收从终端输入的字符串
z = input("请输入z的值")# 请输入z的值8
print(z)# 8
6、模块及其运行
- import导入整个函数库,from导入某个指定的函数
import math
print(math.pow(2,3))# 8.0
print(math.floor(8.12))# 8
from math import sqrt
print(sqrt(9))# 3.0
import cmath
print(cmath.sqrt(-1))# 1j
- 运行模块即调用外文件
调用外文件时先运行文件,然后在Python 3.6.5 Shell窗口中调用外文件的函数。
7、String字符串
字符串,一旦定义不允许修改,一切改变都会生成新的字符串,可通过str()方法将容器转换为字符串。
注意字符串的索引值以0为开始值,-1为从末尾的开始值。
- 单引号与双引号都可以同时存在,如果在字符串中用到’ '就用" "包裹在外面,如果非要用到可以通过转义。
str = "Let‘s go!"
print("数据内容:",str)# 数据内容: Let‘s go!
- 字符串的拼接+
repr显示其状态,str就是显示该字符串
a = "Hello "
b = "world!"
print(a+b)# Hello world!
print(repr(a))# 'Hello '
print(str(b))# world!
- 星号*表示赋值当前字符串,与之结合的数字为复制次数。
str = "Let‘s go!"
print(str*2)# Let‘s go!Let‘s go!
- print长字符串以及字符转义,r可以访问到原字符串,转义’’
print('''This is a very long string
It continues here.
And it's not over yet.
"Hello word"
still here.''')# 进行换行,原样输出
print("D:\nacde\\")# 进行换行
print(r"D:\nacde\\")# 对\n进行转义,不换行
print默认输入时换行的,如果要实现不换行需要在变量末尾加上end=" ";也可以添加指定的结尾end=“,”且不换行等等
print("wenhua",end=",")# wenhua,
- 字符串占位及格式化
# 字符串占位及格式化
name = "wenhua"
age = 23
print(f"姓名:{name},年龄:{age}")# 姓名:wenhua,年龄:23
print("姓名:%s" % name)# 姓名:wenhua
print("姓名:%s,年龄:%d" % (name,age))# 姓名:wenhua,年龄:23
字符串内建函数:
- find(str,beg=0,end=len(string)):检测str是否包含中字符串中,指定范围beg和end
title = "My name is wenhuaDeng!"
print(title.find("name"))# 3
print(title.find("Name"))# 没有找到返回-1
print(title.find("wenhua"))# 11
- join(seq):以指定字符串作为分割符,将seq中所有的元素合并为一个新的字符串。
seq = ['1','2','3','4','5']
str = "+"
print(str.join(seq))# 1+2+3+4+5
- lower()转换字符串中所有的大写字符为小写。
- replace(old,new[,max]):把字符串中str1,替换为str2,如果max指定,则替换不超过max次。
- split(str=“”,num=string,count(str)):以str为分隔符截取字符串,如果num有指定值,则仅截取num+1个字符串
- strip()在字符串上执行lstrip()和rstrip()
- translate(table,deletechars=“”):根据str给出的表转换string的字符,要过滤掉的字符放到deletecahsrs参数中
字符串小结
- 反斜杠可以用来转义,使用r可以让反斜杠不发生转义
- 字符串可以通过+运算符连接起来,用*运算符重复
- Python中的字符串中有两种索引,从左向右以0开始,从右向左以-1开始
- Python中的字符串不能改变
8、List列表
列表:通过中括号定义,可修改,支持重复元素且有序,可以通过list()方法将容器转换为列表,数据元素没有定义,可以嵌套,可以通过下标(从零开始)索取。
age = [23,12,12,"wenhua"]
name = ["Jack","wenhua",age,"sanrui"]
# 列表长度
print(len(name))# 4
# 通过下标索取
print(name[2][1])# 12
# 查看元素下标索引,如果元素不存在就保错
print(name.index(age))# 2
# 改变列表中指定下标的元素
name[1] = "wenhua"
print(name)# ['Jack', 'wenhua', [23, 12, 12, 'wenhua'], 'sanrui']
# insert插入元素
name.insert(1,"weiji")
print(name)# ['Jack', 'weiji', 'wenhua', [23, 12, 12, 'wenhua'], 'sanrui']
# append追加"单一“元素
name.append("wen")
# extend追加批量元素
name.extend(["we","hua"])
# 删除元素 1.del 2.pop取出并删除 3.remove指定元素进行删除
print(name)
del name[1]
print(name)
element = name.pop(1)
print(element)
# 指定元素进行删除
name.remove("we")
# 清空列表
name.clear()
- 列表的循环编列
student = ["Jim","Jack","Jimu","Danny"]
# for循环遍历列表
for i in student:
print(i)
# while循环遍历列表
index = 0
while index < len(student):
print(student[index])
index += 1
- 列表的排序
data = [["c",55],["a",33],["l",23],["s",78]]
# 函数定义排序规则
def my_sort(element):
return element[1]
# key是函数,指排序的规则 ,reverse为True指降序,为False为升序
data.sort(key=my_sort,reverse=True)
print(data)
# 通过lambda匿名函数进行排序
data.sort(key=lambda element:element[1],reverse=False)
print(data)
- 列表切片输出
list = [ 'abcd', 786 , 2.23, 'wenhua', 70.2 ]
tinylist = [123, 'wenhua']
print (list) # 输出完整列表 ['abcd', 786, 2.23, 'wenhua', 70.2]
print (list[0]) # 输出列表第一个元素 abcd
print (list[1:3]) # 输出从第二个到第三个元素之间的元素 [786, 2.23]
print (list[2:]) # 输出从第三个元素开始的所有元素 [2.23, 'wenhua', 70.2]
print (tinylist * 2) # 输出两次列表 [123, 'wenhua', 123, 'wenhua']
print (list + tinylist) # 连接列表 ['abcd', 786, 2.23, 'wenhua', 70.2, 123, 'wenhua']
List列表小结
- list写在方括号中,元素用逗号隔开。
- 和字符串一样,list可以被索引和切片。
- list可以使用+操作符进行拼接。
- list中的元素是可以改变的。
list列表截取可以接受第三个参数即步长。
9、Tuple元组
使用小括号定义一旦定义不能被修改,类型可以不一样,支持重复元素且有序,可通过tuple()方法将容器转换为元组。 通过索引获得指定元素,元素之间用逗号隔开。
- 构造包含0个或1个元素的元组较为特殊
tup1 = () # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号
- 循环遍历元组
t4 = ("xiaoyin","ruirui","wenhua","sanrui")
for index in t4:
print(index)
print("while遍历")
index = 0
while index < len(t4):
print(t4[index])
index += 1
- 元组切片输出
tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2 )
tinytuple = (123, 'runoob')
print (tuple) # 输出完整元组 ('abcd', 786, 2.23, 'runoob', 70.2)
print (tuple[0]) # 输出元组的第一个元素 abcd
print (tuple[1:3]) # 输出从第二个元素开始到第三个元素 (786, 2.23)
print (tuple[2:]) # 输出从第三个元素开始的所有元素 (2.23, 'runoob', 70.2)
print (tinytuple * 2) # 输出两次元组 (123, 'runoob', 123, 'runoob')
print (tuple + tinytuple) # 连接元组 ('abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob')
Tuple元组小结
- 与字符串一样,元组的元素不能修改。
- 元组也可以被索引和切片,方法一样。
- 注意构造包含0或1个元素的元组的特殊语法规则。
- 元组也可以使用+操作符进行拼接。
10、Set集合
集合Set是由一个或数个形态各异的大小整体组成的,构成集合的事务或对象称作元素或是成员。集合是一个无序不重复元素的集,不支持下标索引访问,允许修改。
- 创建: 可以使用大括号{}或者set()函数创建集合,可通过set()方法将容器转换为集合,值得注意的是在创建一个空集合时,必须用set(),而不是{},因为{}是用来创建一个空字典。
# 定义空集合
s1 = set()
print(type(s1))# <class 'set'>
# 定义集合
s2 = {"Google","Wenhua","CSDN","Wenhua"}
print(s2) # {'CSDN', 'Wenhua', 'Google'}
print("集合长度:",len(s2))# 集合长度: 3
# add添加元素
s2.add("Baidu")
print(s2)# {'Wenhua', 'CSDN', 'Baidu', 'Google'}
# remove移除元素
s2.remove("Baidu")
print(s2)# {'Wenhua', 'CSDN', 'Google'}
print(s2.pop()) # Wenhua
# 清空集合(空集合)
s2.clear()
# set可以进行集合运算
a = set('Hello')
b = set('World')
print(a - b) # a和b的差集(difference) {{'H', 'e'}
print(a | b) # a和b的并集(union) {'H', 'o', 'e', 'W', 'r', 'l', 'd'}
print(a & b) # a和b的交集 {'o', 'l'}
print(a ^ b) # a和b中不同时存在的元素{'W', 'r', 'H', 'e', 'd'}
- 遍历循环集合
# 集合的遍历 注:集合不支持下标索引,不能用while循环遍历
s8 = {1,2,3,4,5,6,7,8,9}
for element in s8:
print(element,end=",") # 1,2,3,4,5,6,7,8,9,
11、Dictionary字典
字典 键值对 重复的话,后面的会覆盖前面的 可以嵌套 不可以使用索引 不支持while循环。
字典是通过键来存取的,而不是通过偏移存取。字典是一种映射类型,字典用{}标识,它是一个无序的键(key):值(value)的集合。键必须是不可变类型,且唯一的。
# 定义空字典 {}或dict()
my_dic = dict()
print(type(my_dic)) # <class 'dict'>
# 定义字典
tinydict = {'name':'wenhua','sex':'男','age':21,'address':'陕西'}
print(tinydict.keys()) # 输出所有的键 dict_keys(['name', 'sex', 'age', 'address'])
print(tinydict.values()) # 输出所有值 dict_values(['wenhua', '男', 21, '陕西'])
注意事项
d = {x :x**2 for x in (2,4,6)}
print(d)# {2: 4, 4: 16, 6: 36}
12、数据类型转换
函数 | 描述 |
---|---|
int(x[,base]) | 将x转换为一个整数 |
float(x) | 将x转换到一个浮点数 |
complex(real[imag]) | 创建一个复数 |
str(x) | 将对象x转换为字符串 |
repr(x) | 将对象x转换为表达式字符串 |
eval(str) | 用来计算在字符串中的有效python表达式,并返回一个对象 |
tuple(s) | 将序列s转换为一个元组 |
list(s) | 将序列s转换为一个列表 |
set(s) | 将序列s转换为一个集合 |
dict(d) | 创建一个字典,d必须是一个(key,value)元组序列 |
frozenset(s) | 转变为不可变集合 |
chr(x) | 将一个整数转换为一个字符 |
ord(x) | 将一个字符转换为它的整数值 |
hex(x) | 将一个整数转换为一个十六进制字符串 |
oct(x) | 将一个整数转换为一个八进制字符串 |
list(s) | 将序列s转换为一个列表 |
set(s) | 将序列s转换为一个集合 |
dict(d) | 创建一个字典,d必须是一个(key,value)元组序列 |
frozenset(s) | 转变为不可变集合 |
chr(x) | 将一个整数转换为一个字符 |
ord(x) | 将一个字符转换为它的整数值 |
hex(x) | 将一个整数转换为一个十六进制字符串 |
oct(x) | 将一个整数转换为一个八进制字符串 |