下层基础决定上层建筑,让我们一起学习python
基础语法
标识符
标识符定义规则:
- 标识符由字母、数字、下划线组成
- 第一个字符由字母和下划线组成,数字不能作为标识符的开头
- 区分字母大小写
- 不能使用保留字(保留字:python中自有的标识符)
- 见名知意
变量
- python中变量不能单独存在,变量不能只声明而不赋值,必须在声明变量的同时,进行赋值
- python中,变量是没有类型的,虽然可以用type函数来查看类型,但本质上,变量的类型是由赋值给变量的数据来决定的
缩进
python中的代码所属关系用缩进来表示
注释
- 单行注释:单行注释以 # 开头,根据规范,注释内容与# 间隔一个空格
a=10 # 10赋值给a
- 多行注释:多行注释,可以用三个单引号,或者三个双引号括起来
a=10
b=20
c=30
'''
将10赋值给a
将20赋值给b
将30赋值给c
'''
"""
将10赋值给a
将20赋值给b
将30赋值给c
"""
print标准输出函数
print可以输出任何你想输出的内容,一个整数,一个字符串,一个列表,只要是python的对象
print("输出字符串")# 输出字符串
print([1,2,3])# 输出列表
print(100)# 输出数字
input标准化输入函数
value = input("请输入一个整数:")
print(value, type(value))
input的返回值时字符串
转义字符
用转义字符表达特殊格式,例如/n代表换行,//代表/
数据类型
基础数据类型
- 整型(int):整数,没有大小限制
- 浮点型(float):整数部分和小数部分组成
- 复数(complex):由实数部分和虚数部分构成,编程中几乎用不到
- bool数据类型:只有两个值,分别是True和False
类型转换
a=33.3
a=int(a) # fioat类型数据转换成int类型数据
print(a)
输出结果
a=33
python进制转换
进制类型有10进制、2进制、8进制、16进制
print(0b1101010) # 106 二进制用0b开头
print(0o125) # 85 八进制用0o开头
print(0x3f2a1) # 258721 十进制用0x开头
函数进行进制间转换
二进制,八进制,十六进制转成十进制
使用int函数可以将二进制,八进制,十六进制的数值转成十进制数值,而且字符串的开头可以不携带进制的标识,如果你喜欢使用,也可以写成 int(‘0x3f2a1’, 16)
value = int('1101010', 2)
print(value) # 106
value = int('125', 8)
print(value) # 85
value = int('3f2a1', 16)
print(value) # 258721
十进制转成二进制,八进制,十六进制
十进制转二进制使用bin()函数, 十进制转八进制使用oct()函数, 十进制转十六进制使用hex()函数
print(bin(106)) # 0b1101010 十进制转二进制
print(oct(85)) # 0o125 十进制转八进制
print(hex(258721)) # 0x3f2a1 十进制转十六进制
八进制,十六进制转二进制
并没有函数可以实现直接将八进制或十六进制数转成二进制,因此需要借用int()函数先将八进制的数转成十进制,然后使用bin()函数将十进制数转成二进制
print(bin(int('125', 8))) # 八进制转二进制
print(bin(int('0x3f2a1', 16))) # 十六进制转二进制
字符串
字符串创建
字符串创建用一对单引号或者一对双引号或者三对双引号,字符串的索引有正向和反向之分
字符串索引
字符串运算
操作符 | 描述 |
---|---|
+ | 字符串连接 |
* | 字符串重复 |
[] | 通过索引访问指定的索引字符 |
: | 切片操作,截取字符串指定范围 |
in | 成员运算符-如果字符串中包含给定的字符返回Ture |
not in | 成员运算符-如果字符串中不包含给定的字符返回Ture |
% | 格式字符串 |
字符串切片操作
[start:end),左闭右开,索引为end的元素不会被截取
a = 'I like python'
print( a[2:6]) # 'like' 指定开始和结束位置
print( a[2: ]) #'like python' 指定开始位置,不指定结束位置
print(a[ :-7]) #'I like' 指定结束位置,不指定开始位置
切片操作允许越界
a = 'I like python'
print(len(a)) #用len()函数获取字符串长度
print(a[2:19]) #'like python' 字符串允许越界
指定切片间隔
[start:end :x] x表示切片间隔,可以是负数,表示反向间隔
a = '123456789'
print(a[::-2]) #'97531' 反向每两个索引做一次切片处理
字符串格式化
%s格式化字符串
%d格式化数字
%c格式化字符及其ASCII码
#例1
print('我喜欢%s色'%'红')
#输出结果:
#我喜欢红色
#例2
a='我是%s,今年%d'
b=a%('小明',14)
print(b)
#输出结果:
#我是小明,今年14岁
字符串方法
待补充
编号 | 方法名称 | 功能描述 |
---|---|---|
1 | capitalize() | 将字符串的第一个字符转换为大写 |
字符串类型转换
用内置函数str将int、float、bool数据类型转换为字符串
a=100
str_a=str(a)
print(type(str_a))
#结果:
#<class 'str'>
列表(list)
列表、元组,集合,字典是容器类型数据
列表中数据是有序的
创建列表
列表里可以存放任意类型的数据,每个数据之间,用逗号分隔,整个列表被包裹在一对中括号[]里,如果你定义lst = [],[]表示一个空列表。
list1=[1,2,3,4,5]
list2=[1,'2',ture]
list3=[[1,2,3],4,'列表']
列表索引
向列表中添加数据
insert :指定插入位置
append:默认在列表尾部插入数据
lst = [3, 5, 8, 1, 2, 6, 9]
lst.insert(2, 22) # 将22插入到索引为2的位置上
lst.append(33) # 将33增加到列表尾部
print(lst)
#结果
#[3, 5, 22, 8, 1, 2, 6, 9, 33]
列表遍历
方法1:索引遍历
lst = [3, 5, 8, 1, 2, 6, 9]
for i in range(len(lst)):
print(lst[i])
方法2:迭代器遍历
lst = [3, 5, 8, 1, 2, 6, 9]
for item in lst:
print(item)
方法3:enumerate函数遍历
lst = [3, 5, 8, 1, 2, 6, 9]
for index, item in enumerate(lst):
print(index, item)
删除列表中元素
删除列表里的元素有两种方法,一种是根据索引来删除,一种是根据值来删除
根据索引删除:用列表的pop方和del关键字
lst = [3, 4, 1, 4, 2]
lst.pop(0) # 删除索引为0的元素
print(lst)
#结果
#[4, 1, 4, 2]
lst = [3, 4, 1, 4, 2]
del lst[0] # 删除索引为0的元素
print(lst)
#结果
#[4, 1, 4, 2]
del lst[0] 等价于 lst.pop(0)
根据值删除列表里的元素:
根据值删除,使用remove方法,remove会删除列表里指定的值,比如你想删除4
lst = [3, 4, 1, 4, 2]
lst.remove(4) # 删除列表中的4
print(lst)
#结果
#[3, 1, 4, 2]
'''需要注意的是,remove方法一次只会删除一个值,列表里有两个4,它会删除索引最小的那个4'''
列表相关内置函数
1、len计算列表长度
lst = [3, 4, 1, 4, 2]
print(len(lst))
2、max返回列表中最大值
lst = [3, 4, 1, 4, 2]
print(max(lst))
3,min返回列表中最小值
lst = [3, 4, 1, 4, 2]
print(min(lst))
4、sum返回列表中所有数据之和
lst = [3, 4, 1, 4, 2]
print(sum(lst))
列表嵌套
lst = [1, [1, 5], 3, [9, 8, [1, 3]], 5]
print(lst[3][2][0])
print(lst[1:4])
#结果为 1
列表方法
待补充
方法 | 功能 |
---|---|
count() | 统计某个元素在列表中出现的次数 |
元组(tuple)
元组和列表非常相似,不同之处在于,元组里的元素不能修改。
元组使用小括号,列表使用中括号
tup1 = (1,2,3,4)
tup2 = (1, )
如果元组里只有一个元素,也必须使用逗号
对于元组的理解,参照列表即可
元组与列表之间可以使用list()和tuple()函数进行转换
lst = [1,2,3]
tup = tuple(lst)
lst2 = list(tup)
字典(dict)
字典存储的是key:value对, 字典中存储的数据总是成对的, key被称之为键, value称之为值, 值可以是任意数据且可重复, 而键不可重复且必须是可hash的,字典中数据是无序的
创建字典
字典是一个容器类型数据,字典里存储的是键值对,键值对用冒号分割key与value,每个键值(key-value)对用逗号分割,整个字典包裹在花括号{}中
contacts_dict = {
"小王": '13892339876',
"小张": '13898320987',
"小李": '13890348745'
}
新增字典键值对和修改value
新增键值对的方式,一对中括号紧跟在字典后面,中括号里写key,等号右侧写value
score_dict['小丽'] = 100
字典中key值不能重复,修改键值对时如果key不存在,那么就会新增键值对,如果key已经存在,就会修改value
访问字典中的值
用key值访问
score_dict = {
'小明': 99,
'小刚': 98,
'小红': 94
}
print(score_dict['小红'])
#结果为 94
删除字典里的键值对
指定key值删除
del score_dict['小红']
除了这种方法外,你还可以使用字典的pop方法
score_dict.pop('小红')
字典嵌套
stu_dict = {
'name': '小明',
'age': 12,
'score': {
'语文': 90,
'数学': 98
}
}
print(stu_dict['score']['语文'])
#结果为90
字典方法
方法 | 功能作用 |
---|---|
clear() | 删除字典内所有的元素 |
集合(set)
集合中的元素有3个特性:
- 确定性:给定一个集合,任何对象是不是这个集合的元素是确定的了
- 互异性:集合中的元素一定是不同的
- 无序性:集合中的元素没有固定的顺序
创建集合
set_1 = set() # 空集合
set_2 = {'python', 32, 983.9, 'python', 'php'}
集合添加删除元素
my_set = {'python', 32, 983.9, 'python', 'php'}
my_set.clear()
print(my_set)
集合常用操作
1 、clear,清空集合
列表,字典,集合的清空操作,都可以使用clear来完成
my_set = {'python', 32, 983.9, 'python', 'php'}
my_set.clear()
print(my_set)
2 、in 和 not in
in 和 not in 是成员运算符,对于列表,元组,字典,集合,判断一个数据是否在这些容器类型数据中,都可以使用成员运算符
my_set = {'python', 32, 983.9, 'python', 'php'}
print('php' in my_set)
3、交集
set1 = set(lst1)
set2 = set(lst2)
inter_set = set1.intersection(set2)
print(inter_set)
4、并集
union = set1.union(set2)
print(union)
5、差集
diff_set = set1.difference(set2)
print(diff_set)
集合方法
待补充
方法 | 描述 |
---|---|
add() | 为集合添加元素 |
程序控制
条件控制
if语句
if condition:
block
condition 是一个表达式
如果condition等价于True,则进入block代码块执行代码
block代码块相比于if语句缩进4个空格
else
value = input("请输入一个正整数:")
i_value = int(value)
if i_value % 2 == 0:
print("你输入的整数是:{value}, 它是偶数".format(value=value))
else:
print("你输入的整数是:{value}, 它是奇数".format(value=value))
elsf
value = input("输入一种颜色:")
if value == '红色':
print("红灯停")
elif value == '绿色':
print("绿灯行")
elif value == '黄色':
print("等一等")
else:
print("无法识别")
if嵌套
num = int(input("输入一个数字:"))
if num < 50:
if num % 3 == 0:
print('可以被3整除')
else:
print('不能被3整除')
else:
if num % 5 == 0:
print("可以被5整除")
else:
print("不能被5整除")
循环控制
for循环
- tmpVar 是临时变量
- Iterable 是可迭代对象
- 绿色区域是循环条件,当对可迭代对象的迭代遍历结束时,for循环也就结束
- block是循环体,每一次循环,程序都要进入到这个block内来执行代码
for循环,从形式上可以分为两种
- 使用range函数自由控制循环次数
- 遍历容器
1、range函数
range函数返回一个对象,该对象产生一个整数序列。
range函数有3个参数
- start 整数序列开始的位置
- stop 整数序列结束的位置
- step 步长
开始与结束位置所组成的区间[start, stop)是左闭右开的,start默认是0,step默认是1。下面向你展示range函数的使用方法
- range(1, 5) 产生的整数序列是1, 2, 3, 4
- range(0, 4, 2) 产生的整数序列是0,2
- range(5, 0, -1) 产生的整数序列是5, 4, 3, 2, 1
- range(3) 产生的整数序列是0,1,2
2、遍历容器数据
下面的代码向你展示如何判断一个数据是不是可迭代对象
from collections import Iterable
print(isinstance(range(5), Iterable)) # range函数返回值是可迭代对象
print(isinstance([1, 2], Iterable)) # 列表
print(isinstance((1, 2, 3), Iterable)) # 元组
print(isinstance({1, 2, 3}, Iterable)) # 集合
print(isinstance({"a": 1, "b": 2}, Iterable)) # 字典
python 循环中的continue 与 break
- coninue的中文翻译是继续,在循环体里,continue的作用是跳过当前循环的剩余语句,结束本次循环,继续进行下一轮循环,下面用一个简单的例子来演示continue的功能
- 满足某个条件时,我们希望能终止循环,这时,你需要使用break语句。不同于continue,break具有很强的破坏力,它的作用是直接停止当前所在的循环
while循环
python中的while语句用于循环执行程序,当给定的判断条件为True时执行循环体,循环体里是一段需要重复执行的代码。每一次执行完循环体都要重新对判断条件进行计算,只有当判断条件为False的时候才会终止循环, 此外,也可以使用break语句终止循环
python while循环的一般形式
while 表达式:
代码块
函数
函数调用和定义
1、函数定义
def 函数名(参数列表):
函数体
2、函数调用
def hello_word(): #参数可以为空
print('hello world')
hello_word()
数据存储
文件读写
读取文件时,首先要打开文件,获得句柄
f = open('学生信息.txt','r')
使用open函数,可以打开一个文件,返回文件句柄,open函数的第一个参数是文件地址,第二个参数是打开模式,打开模式详细介绍如下
访问模式 | 说明 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写 |