python基本语法
第一节 开发环境安装介绍
一、计算机组成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5yYrpni6-1618656212448)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210415091101436.png)]
CPU:处理数据的
内存中:CPU要处理的数据
硬盘:永久存储数据的地方
二、python介绍
1、python火爆的原因
简单易学
免费、开源
应用领域广泛:web开发、爬虫、数据分析、人工智能、机器学习、自动化测试、自动化运维
备注:知名框架
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0TfUd3Q0-1618656212451)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210415092224072.png)]
2、python版本
基于python3.5版本
课程以3.7版本讲解
3、下载和安装python
下载网站:https://www.python.org/downloads/windows/
安装:傻瓜式安装
测试:按cmd+r,进入命令行操作,输入python,按回车键会显示版本号
注意点:如果安装多个版本的python,可对不同版本的python解释器进行重命名。例如python2(python2.X的版本)、python3(python3.X的版本)
三、PyCharm
1、pycharm的作用
是一种集成开发环境,功能:智能提示、语法高亮、代码跳转、调试代码、解释代码、框架和库...
下载社区版本
2、下载和安装
下载网站:https://www.jetbrains.com/pycharm/download/#section=windows
勾选:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VPGmwSDw-1618656212454)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210415101416067.png)]
3、pycharm基本使用
新建项目:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fTXaO22A-1618656212460)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210415102633768.png)]
新建文件并书写代码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7TXwvdJ2-1618656212464)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210415103547132.png)]
运行文件
右击点击run
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-exRA1weY-1618656212465)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210415103629553.png)]
4、pycharm设置
界面修改
代码样式修改
解释器修改
5、项目管理
打开项目
第二节 变量和基本数据类型
一、注释
单行注释
# 注释内容
print("hello world") # 简单注释
快捷键 CTRL+/
多行注释
"""
注释一
注释二
注释三
"""
或者
'''
注释一
注释二
注释三
'''
注意:单行注释一般是对一行代码进行注释
多行注释一般是对多行代码或者对代码块进行注释
二、变量的作用
变量的定义:内存地址的名字
2.1 定义变量:
变量名 = 值
变量名自定义,要满足标识符命名规则
2.2 标识符:
- 有数字、下划线、字母组成
- 不能数字开头
- 不能使用内置关键字
- 严格区分大小写
2.3 命名习惯:
- 见名知意
- 大驼峰:MyName
- 小驼峰:myName
- 下划线:my_name
2.4 使用变量
my_name = 'hello world'
print(my_name)
2.5 认识bug
- 打断点
- debug调试
三、数据类型
-
数值类型:int float
-
布尔型 bool
-
字符串 str
-
列表 list
list1 = [10, 20, 30]
-
元组 tuple
tuple1 = (10, 20, 30)
-
集合 set
set = {10, 20, 30}
-
字典 dict
dict1 = {'name': '李白', 'age': 18}
注意:逗号和冒号后面都要加入空格
四、输出
1、格式化输出
- %s 字符串
- %d 有符号的十进制整数
- %f 浮点数
- %c 字符
- %u 无符号十进制整数
- %o 八进制整数
- %x 十六进制整数(小写ox)
- %X 十六进制整数(大写OX)
- %e 科学计数法(小写‘e’)
- %E 科学计数法(大写‘E’)
- %g %e和%f的简写
- %G %E和%F的简写
技巧:
- %06d , 表示输出的整数显示位数,不足以0补全,超出当前位数原样输出
- %.2f , 表示小数点后显示的小数位数
2、f 格式化字符串
格式:f’{表达式}'
注意:这是python3.6之后的版本才采用的
print('我的名字是%s,今年%d岁了' % (name, age))
采用f表达式后是:
print(f'我的名字是{name},今年{age}岁了')
3、转义字符
- \n:换行
- \t:制表符,一个tab键为4个空格的距离
4、结束符
print('hello')实际上是print('hello', end="\n"),默认自带end="\n"换行结束符
用户可以根据自己的需求进行更改
第三节 数据类型转换和运算符
一、输入
1、输入语法
input("提示信息")
2、输入的特点
- 接受用户输入的数据一般存储到变量中,方便使用
- input会把接收到的任意用户输入的数据都当作字符串处理
二、转换数据类型
- int(x[,base]) 将x转换成一个整数
- float(x) 将x转换成一个浮点数
- str(x) 将x转换成一个字符串
- eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象
- tuple(str) 将序列s转化成一个元组
- list(str) 将字符串转换成一个列表
- complex(real[,imag]) 创建一个复数,real为实部,imag为虚部
- repr(x) 将对象x转换成表达式字符串
- chr(x) 将一个整数转换为一个Unicode字符
- ord(x) 将一个字符转换为它的ASCII整数值
- hex(x) 将一个整数转换为一个十六进制字符串
三、运算符
1、算数运算符
加减乘除:+ - * /
整除 //
取余 %
指数 ** 2**4=16
小括号 ()
2、赋值运算符
等号 =
单变量赋值 num = 1
多变量赋值 num1, float1, str1 = 10, 0.5, 'hellowold'
多个变量赋相同的值 a = b = 10
3、复合赋值运算符
加减乘除赋值运算符 +=、-=、*=、/=
整除赋值运算符 //=
取余赋值运算符 %=
幂赋值运算符 **=
注意点: d = 10 d *= 2 + 1 ---- 10*(2+1)
先算赋值运算符右边的表达式
4、比较运算符
== 判断相等
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
5、逻辑运算符
and 与
or 或
not 非
拓展:数字之间的逻辑运算
and : 只要有一个值为0,否则结果为最后一个非0数字
0 and 9 and 7 结果为:0
9 and 8 and 6 结果为:6
or : 只有所有值为0,否则结果为第一个非0的数字
0 or 8 or 7 结果为: 8
8 or 1 结果为: 8
第四节 if语句
一、if语法
1、语法
if条件:
条件成立执行的代码1
条件成立执行的代码2
。。。
2、实例
if 条件:
条件成立要执行的代码
注意:条件成立要执行下方带缩进的代码
if True:
print('条件成立执行的代码')
age = int(input('请输入年龄:')) # 注意:age为字符串类型,要进行类型转换
if age >= 18:
print('用户已成年可以上网')
二、多重判断
1、语法
if 条件1:
代码1
代码2
...
elif 条件2:
代码1
代码2
...
...
else:
以上条件都不成立执行的代码
2、实例
age = int(input('请输入您的年龄:'))
if age < 18:
print('未成年不可以上网')
elif (age >= 18) and (age <= 60): # 可化简成: 18 <= age <= 60
print('已成年可以上网')
else:
print('年龄太大不可以上网')
print('系统关闭')
三、if 嵌套
1、语法
if 条件1:
代码1
代码2
if 条件2:
代码3
代码4
2、实例:公交车例子
money = 1
seat = 1
if money == 1:
print('您好,请上车')
if seat == 1:
print('坐着')
else:
print('站着')
else:
print('来,跟着后面跑吧')
四、猜拳游戏
1、需求分析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7XR53huL-1618656212469)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210415194111599.png)]
1、出拳
玩家:手动输入
电脑:1.固定:剪刀 2.随机
2、判断输赢
2.1 玩家获胜
2.2 平局
2.3 电脑获胜
2、代码编写
import random
print('提示(0--剪刀,1--石头,2--布)')
player = int(input('玩家输入'))
computer = random.randint(0, 2)
if ((player == 0) and (computer == 2)) or ((player == 1) and (computer == 0)) or ((player == 2) and (computer == 1)):
print('获胜')
elif ():
print('平局')
else:
print('电脑获胜')
五、三目运算符
条件成立执行的表达式 if 条件 else 条件不成立执行的表达式
a = 1
b = 2
c = a if a > b else b
第五节 while循环
一、语法
while 条件:
代码1
代码2
....
实例:
i = 100
while i != 0:
print('媳妇我错了')
i -= 1
二 、应用
1、计算1~100以内的数字累加和
sum_i = 0
i = 0
while i <= 100:
sum_i += i
i += 1
print(f'100以内数字的和为{sum_i}')
2、计算100以内偶数的累加和
# 方法一:计数器控制
i = 0
sum_i = 0
while i <= 100:
sum_i += i
i += 2
print(f'100以内偶数的累加和为{sum_i}')
# 方法二:使用偶数判断条件
i = 0
sum_i = 0
while i <= 100:
if i % 2 == 0:
sum_i += i
i += 1
print(f'100以内偶数的累加和为{sum_i}')
三、break 和 continue
1、break
终止此循环
# 吃五个苹果,当吃完三个苹果后不吃了
i = 1
while i <= 5:
print(f'吃了第{i}个苹果')
i += 1
if i == 3:
print('吃饱了,不吃了')
break
2、continue
退出当前一次循环继而执行下一次循环
# 吃五个苹果,当吃到第三个苹果迟到虫子就不吃了
i = 1
while i <= 5:
if i == 3:
print('吃到虫子了,不吃了')
i += 1 #应注意计数器
continue
print(f'吃了第{i}个苹果')
i += 1
四、while循环嵌套
1、语法
while 条件1:
条件1成立执行的代码
...
while 条件2:
条件2成立执行的代码
....
2、实例:
# 每天说五遍媳妇我错了,还要刷碗,并且要连续三天
day = 3
count = 5
# 外循环为天数
while day != 0:
while count != 0:
print('媳妇我错了')
count -= 1
print('刷碗')
count = 5
day -= 1
print('------------')
3、应用
1、打印星号(正方形)
# 打印正方形星号
count_row = 0
count_column = 0
while count_row < 5:
while count_column < 5:
print('*', end='')
count_column += 1
count_column = 0
print()
count_row += 1
2、打印三角形
# 打印三角形
count_row = 1
count_column = 0
while count_row < 6:
while count_column < count_row:
print('*', end='')
count_column += 1
print()
count_column = 0
count_row += 1
3、打印九九乘法表
# 打印九九乘法表
count = 9 # 控制行数和列数
i = j = 1 # i和j用于记录
while i <= count:
while j <= i:
print(f'{i}*{j}={i*j}', end=' ')
j += 1
print()
j = 1
i += 1
第六节 for 循环
一、语法
for 临时变量 in 序列: # 是由多个数据组成的
重复执行的代码1
重复执行的代码2
...
str1 = 'python'
for i in str1:
print(i)
二、break 和 continue
# break
for i in str1:
if i == 'h':
print('遇到h不打印')
break
print(i)
# continue
for i in str1:
if i == 'h':
print('遇到h不打印')
continue
print(i)
三、else与循环的使用
- while和for都可以配合else使用
- else下方缩进的代码含义:当代码正常结束后执行的代码
- break终止循环不会执行else下方缩进的代码
- continue退出循环的方式执行else下方缩进的代码
第七节 字符串
一、下标
name = 'abcde'
print(name[0])
二、切片
切片是指对操作对象截取其中一部分的操作。字符串、列表、元组都支持切片的操作
1、语法
序列[开始位置下标:结束位置下标:步长]
注意:
1、区间是左闭右开
2、步长是选取间隔,正负整数均可,默认步长为1
3、步长可以不写,默认为1
2、实例
str1 = '012345678'
print(str1[2:5:1]) # 234
print(str1[2:5:2]) # 24
print(str1[2:5]) # 234
print(str1[:5]) # 01234
print(str1[2:]) # 2345678
print(str1[:]) # 012345678
# 负数测试
print(str1[::-1]) # 876543210
print(str1[-4:-1]) # 567 # 倒续输出采用的还是左闭右开的原则
# 终极测试
print(str1[-4:-1:1]) # 567
print(str1[-4:-1:-1]) # 不能选取数据:从-4开始到-1结束,选取方向为从左到右,但是-1步长:从右向左选取
# ***【重点】 如果选取方向(下标开始到结束的方向)和 步长的方向冲突,则无法选取数据
print(str[-1:-4:-1]) # 876
三、常用操作方法
1、查找
find()
检测某个子串是否包含在这个字符串中,如果在则返回这个子串开始的位置下标,否则返回-1
语法:
字符串序列.find(字串, 开始位置的下标, 结束位置的下标)
注意:开始位置的下标和结束的下标都可以省略,表示在整个字符串序列中查找
index()
检测某个子串是否包含在这个字符串中,如果在则返回这个字串开始的下标,否则报错
语法:
字符串序列.index(子串, 开始位置的下标, 结束位置的下标)
注意:开始位置的下标和结束位置的下标都可以省略
count()
返回某个子串在字符串中出现的次数
- rfind(): 和find功能相同,但是查找到方向只是从右边开始
- rindex():和index功能相同,但是查找的方向只是从右边开始
2、修改
replace()
替换字符串
语法:
字符串序列.replace(旧字符串, 新字符串, 替换次数)
mystr = "hello world and itcast and itheima and Python"
# 结果:hello world he itcast he itheima he Python
print(mystr.replace('and', 'he'))
# 结果:hello world he itcast he itheima he Python
print(mystr.replace('and', 'he', 10))
# 结果:hello world and itcast and itheima and Python
print(mystr)
注意:如果没有写替换次数,则默认全部替换。返回值为一个字符串类型
split()
分割字符串
语法
字符串序列.split(分割字符, num)
mystr = "hello world and itcast and itheima and Python"
# 结果:['hello world ', ' itcast ', ' itheima ', ' Python']
print(mystr.split('and'))
# 结果:['hello world ', ' itcast ', ' itheima and Python']
print(mystr.split('and', 2))
# 结果:['hello', 'world', 'and', 'itcast', 'and', 'itheima', 'and', 'Python']
print(mystr.split(' '))
# 结果:['hello', 'world', 'and itcast and itheima and Python']
print(mystr.split(' ', 2))
注意:num为分割的次数,即将来返回数据个数为num++。返回值类型为一个列表类型
join()
合并字符串
语法
字符或子串.join(多字符串组成的序列)
list1 = ['chuan', 'zhi', 'bo', 'ke']
t1 = ('aa', 'b', 'cc', 'ddd')
# 结果:chuan_zhi_bo_ke
print('_'.join(list1))
# 结果:aa...b...cc...ddd
print('...'.join(t1))
大小写转换函数
capitalize():只有字符串第一个字符转换成大写,即使字符串中有其他大写也会转换成小写
title():将字符串每个单词首字母转换成大写
lower():将字符串中大写转换成小写
upper():将字符串中小写转大写
删除空白函数
rstrip: 删除字符串右侧空白字符
lstrip: 删除字符串左侧空白字符
strip: 删除字符串两侧空白字符
对齐函数
ljust:左对齐
rjust:右对齐
center:中间对齐
3、判断函数
-
startwith():检查字符串是否以指定子串开头,是则返回True,否则返回False。如果设置开始和结束位置下标,则在指定范围内检查
语法: 字符串序列.startwith(子串, 开始位置的下标, 结束位置的下标)
-
endwith():用法与startwith类似
-
isalpha():如果字符串至少有一个字符并且所有字符都是字母则返回True,否则返回False
-
isdigit():如果字符串只包含数字则返回True否则返回False
-
isalnum():字符串为字母或者数字的组合
-
isspace():如果字符串都是空白则返回True,否则返回False
第八节 列表和元组
一、列表的格式
[数据1, 数据2, 数据3, ...]
列表可以一次性存储多个数据,且可以为不同数据类型
二、常用操作
1、查找
name_list = ['Tom', 'Lily', 'Rose']
print(name_list[0]) # Tom
print(name_list[1]) # Lily
-
index():返回指定数据所在位置的下标
注意:如果查找的数据不存在则会报错
语法: 列表序列.index(数据, 开始位置下标, 结束位置下标) name_list = ['Tom', 'Lily', 'Rose'] print(name_list.index('Lily', 0, 2)) # 1
-
count():统计指定数据在当前列表中出现的次数
name_list = ['Tom', 'Lily', 'Rose'] print(name_list.count('Tom')) # 1 print(name_list.count('Toms')) # 0
-
len():访问列表长度,即列表中数据的个数
name_list = ['Tom', 'Lily', 'Rose'] print(name_list.len()) # 3
- 判断某个数据是否存在
-
in:判断某个数据是否在列表中,如果在则返回一个True,不在则返回一个False
name_list = ['Tom', 'Lily', 'Rose'] isLily = 'Lily' in name_list print(isLily) # True
-
not in:判断指定数据不在某个列表序列中,如果不在则返回一个True,否则返回一个False
name_list = ['Tom', 'Lily', 'Rose'] isLily = 'Rose' not in name_list print(isLily) # False
体验案例
需求:查找用户输入的名字是否已经存在
name_list = ['Tom', 'Lily', 'Rose'] name = input('请输入一个名字') if name in name_list: print('您输入的名字已经存在') else: print('您输入的名字不存在')
2、增加
-
append():列表结尾增加数据
语法: 列表序列.append(数据) name_list = ['Tom', 'Lily', 'Rose'] name_list.append('xiaoming') print(name_list) # ['Tom', 'Lily', 'Rose', 'xiaoming'] name_list.append(['xiaoming', 'xiaoming']) print(name_list) # ['Tom', 'Lily', 'Rose', 'xiaoming', ['xiaoming', 'xiaoming']] # 注意点:如果append追加的数据是一个序列,则追加整个序列到列表
-
extend():列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表
# 单个数据: name_list = ['Tom', 'Lily', 'Rose'] name_list.extend('xiaoming') print(name_list) # 结果:['Tom', 'Lily', 'Rose', 'x', 'i', 'a', 'o', 'm', 'i', 'n', 'g'] # 多个数据 name_list.extend(['xiaoming', 'xiaohong']) print(name_list) # 结果:['Tom', 'Lily', 'Rose', 'xiaoming', 'xiaohong']
-
insert():指定位置新增数据
语法: 列表.insert(位置下标, 数据) name_list = ['Tom', 'Lily', 'Rose'] name_list.insert(1, 'xiaoming') # 结果:['Tom', 'xiaoming', 'Lily', 'Rose'] print(name_list)
3、删除
- del
可以删除指定的数据 del name_list[0]
也可以删除列表 del name_list
-
pop():删除指定下标的数据(默认为最后一个),并返回该数据
语法: 列表序列.pop(下标) name_list = ['Tom', 'Lily', 'Rose'] del_name = name_list.pop(1) print(del_name) # Lily print(name_list) # ['Tom', 'Rose'] name_list = ['Tom', 'Lily', 'Rose'] del_name = name_list.pop() print(del_name) # Rose print(name_list) # ['Tom', 'Lily']
-
remove():移除列表中某个数据的第一个匹配项
语法: 列表序列.remove(数据) name_list = ['Tom', 'Lily', 'Rose'] name_list.remove('Rose') print(name_list) # [['Tom', 'Lily']
-
clear():清空列表
name_list = ['Tom', 'Lily', 'Rose'] name_list.clear() print(name_list) # 结果 []
4、修改
name_list = ['Tom', 'Lily', 'Rose']
name_list.insert(1, ‘xiaoming’)
结果:[‘Tom’, ‘xiaoming’, ‘Lily’, ‘Rose’]
print(name_list)
#### 3、删除
1. del
```python
可以删除指定的数据 del name_list[0]
也可以删除列表 del name_list
-
pop():删除指定下标的数据(默认为最后一个),并返回该数据
语法: 列表序列.pop(下标) name_list = ['Tom', 'Lily', 'Rose'] del_name = name_list.pop(1) print(del_name) # Lily print(name_list) # ['Tom', 'Rose'] name_list = ['Tom', 'Lily', 'Rose'] del_name = name_list.pop() print(del_name) # Rose print(name_list) # ['Tom', 'Lily']
-
remove():移除列表中某个数据的第一个匹配项
语法: 列表序列.remove(数据) name_list = ['Tom', 'Lily', 'Rose'] name_list.remove('Rose') print(name_list) # [['Tom', 'Lily']
-
clear():清空列表
name_list = ['Tom', 'Lily', 'Rose'] name_list.clear() print(name_list) # 结果 []