python基本语法

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调试

三、数据类型

  1. 数值类型:int float

  2. 布尔型 bool

  3. 字符串 str

  4. 列表 list

    list1 = [10, 20, 30]
    
  5. 元组 tuple

    tuple1 = (10, 20, 30)
    
  6. 集合 set

    set = {10, 20, 30}
    
  7. 字典 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
  • 函数
  1. index():返回指定数据所在位置的下标

    注意:如果查找的数据不存在则会报错

    语法:
    	列表序列.index(数据, 开始位置下标, 结束位置下标)
        
    name_list = ['Tom', 'Lily', 'Rose']
    print(name_list.index('Lily', 0, 2))	# 1
    
  2. count():统计指定数据在当前列表中出现的次数

    name_list = ['Tom', 'Lily', 'Rose']
    print(name_list.count('Tom'))	# 1
    print(name_list.count('Toms'))	# 0
    
  3. len():访问列表长度,即列表中数据的个数

    name_list = ['Tom', 'Lily', 'Rose']
    print(name_list.len())	# 3
    
  • 判断某个数据是否存在
  1. in:判断某个数据是否在列表中,如果在则返回一个True,不在则返回一个False

    name_list = ['Tom', 'Lily', 'Rose']
    isLily = 'Lily' in name_list
    print(isLily)	# True
    
  2. 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、删除

  1. del
可以删除指定的数据	del name_list[0]
也可以删除列表		del name_list
  1. 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']
    
  2. remove():移除列表中某个数据的第一个匹配项

    语法:
    	列表序列.remove(数据)
        
        name_list = ['Tom', 'Lily', 'Rose']
        
        name_list.remove('Rose')
        print(name_list)	# [['Tom', 'Lily']
    
  3. 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
  1. 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']
    
  2. remove():移除列表中某个数据的第一个匹配项

    语法:
    	列表序列.remove(数据)
        
        name_list = ['Tom', 'Lily', 'Rose']
        
        name_list.remove('Rose')
        print(name_list)	# [['Tom', 'Lily']
    
  3. clear():清空列表

    name_list = ['Tom', 'Lily', 'Rose']
    
    name_list.clear()
    print(name_list)	# 结果 []
    

4、修改

上一篇:实验三 面向对象分析与设计


下一篇:实验三 面向对象分析与设计