前言:Python是一个高层次的结合了解释性,编译性,互动性和面向对象的脚本语言。
1.Python数据类型
分类:
1.数值:int(整型);float(浮点型)
2.布尔型:True(真);False(假)
3.str(字符串)
4.list(列表)
5.tuple(元组)
6.set(集合)
7.dict(字典)
检测数据类型的方法:type(变量名或者数值)
1.按经验将不同的变量存储不同的类型的数据
2.验证这些数据到底是什么类型-检测数据类型--type(数据)
"""
num1=1
num2=1.1
#int--整型
type(num1)
print(type(num1))
# float--浮点型,就是小数
print(type(num2))
# str--字符串,特点:数据都要带引号
a="hello,world"
print(type(a))
# bool--布尔型,通常判断使用,布尔型有两个取值True和False
b=True
print(type(b))
#list --列表
c=[10,20,30]
print(type(c))
# tuple--元组
d=(10,20,30)
print(type(d))
#set--集合
e={10,20,30}
print(type(e))
#dict--字典--键值对
f={'name':'Tom','age':18}
print(type(f))
思考:为什么Python会提出这么多的数据类型?
有限的内存,无限的变量,合理的使用内存。
2.输出
作用:程序输出内容给用户
print("hello,world")
age=18
print(age) #18
1.格式化输出
常用的格式化输出
格式符号 转换 %s 字符串 %d 有符号的十进制整数 %f 浮点数 %c 字符
注意:%06d,表示输出的整数显示位数,不足以0补全,超出则按原样输出。
%0.2f,表示小数点后显示的小数位数。
2.内置函数format
format()用于字符串格式化,功能非常强大,格式是str.format(),format函数可以接受不限个函数,位置可以不按顺序。
3.f-格式化字符串
格式为:f'{表达式}'
练习示例:
1.准备数据
2.格式化符号输出数据
"""
age=18
name='TOM'
weight=75.5
stu_id=1
#1.今年我的年龄是x岁 --整数 %d
print("今年我的年龄是%d岁" %age)
#2.我的名字是x --字符串 %s
print("我的名字是%s" %name)
#3.我的体重是x公斤 --浮点数 %f
print("我的体重是%f公斤" %weight)
#4.我的学号是x --%d
print("我的学号是%d" %stu_id)
print("我的学号是%03d" %stu_id) #学号三位数
#5.我的名字是x,今年x岁了
print("我的名字是%s,今年%d岁了" %(name,age))
#5.1 我的名字是x,明年x岁了
print("我的名字是%s,明年%d岁了" %(name,age+1))
#6.我的名字是x,今年x岁了,体重x公斤,学号是x
print("我的名字是%s,今年%d岁了,体重%0.2f公斤,学号是%03d" %(name,age,weight,stu_id))
今年我的年龄是18岁
我的名字是TOM
我的体重是75.500000公斤
我的学号是1
我的学号是001
我的名字是TOM,今年18岁了
我的名字是TOM,明年19岁了
我的名字是TOM,今年18岁了,体重75.50公斤,学号是001
4.转义字符
- \n:换行
- \t:制表符,一个tab键的距离
3.输入
输入的特点:
- 当程序执行到input,等待用户输入,输入完成之后才继续向下执行
- 在Python中,input接收用户输入后,一般存储到变量方便使用。
- 在Python中,input会把接受收到的任意用户输入的数据当作字符串处理。
password=input("请输入您的密码:")
print(f'您输入的密码是{password}')
print(type(password))
请输入您的密码:1234
您输入的密码是1234
<class 'str'>
4.转换类型
常用转换数据类型的函数
函数 说明 int(x,[base]) 将x转换为一个整数 float(x) 将x转换为一个浮点数 str(x) 将对象x转为一个字符串 eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象 tuple(s) 将序列s转换为一个元组 list(s) 将序列s转换为一个列表
转换数据类型示例:
#1.接收用户输入
num=input("请输入您的幸运数字:")
#2.打印结果
print("您的幸运数字是%s" %num)
#3.检测接收到的用户输入的数据类型
print(type(num))
#4.转换数据类型为整型--int类型
print(type(int(num)))
请输入您的幸运数字:7
您的幸运数字是7
<class 'str'>
<class 'int'>
#1.folat()---转成为浮点型
num1=1
print(float(num1))
print(type(float(num1)))
#2.str()----转成字符串型
num2=10
print(type(str(num2)))
#3.tuple()---转成元组
list1=[10,20,30]
print(tuple(list1))
print(type(tuple(list1)))
#4.list()---转换为列表
t1=(10,20,30)
print(list(t1))
print(type(list(t1)))
#5.eval()--将字符串转成Python表达式原本类型
str1='10'
str2='[1,2,3]'
str3='(100,200,300)'
print(type(eval(str1)))
print(type(eval(str2)))
print(type(eval(str3)))
1.0
<class 'float'>
<class 'str'>
(10, 20, 30)
<class 'tuple'>
[10, 20, 30]
<class 'list'>
<class 'int'>
<class 'list'>
<class 'tuple'>
5.条件语句
1.if语法
if 条件:
条件成立执行的代码1
条件成立执行的代码2 .....
示例:
if True:
print("条件成立执行的代码1")
print('条件成立执行的代码2')
#下方的代码没有缩进到if语句块,所以和if条件无关
print('我是无论条件是否成立都要执行的代码')
示例演示:
例子:网吧上网
#如果用户年龄大于等于18岁,即成年,输出'已经成年,可以上网'
age=int(input('请输入您的年龄:'))
if age>18:
print("您的年龄是%s岁,已经成年,可以上网" %age)
print("系统关闭")
请输入您的年龄:20
您的年龄是20岁,已经成年,可以上网
系统关闭
2.if...else...
if 条件:
条件成立执行的代码1
条件成立执行的代码2 。。。
esle :
条件不成立执行的代码1
条件不成立执行的代码2 。。。
if..else..练习示例:
age=int(input('请输入您的年龄:'))
if age>18:
print("你的年龄是%s岁,已经成年,可以上网" %age)
else:
print("您的年龄是%s岁,未成年,回家啊写作业" %age)
print('系统关闭')
请输入您的年龄:18
您的年龄是18岁,未成年,回家啊写作业
系统关闭
3.多重判断
if 条件1:
条件成立执行的代码1
条件成立执行的代码2。。。
elif 条件2:
条件2成立执行的代码1
条件2成立执行的代码2。。。
.。。。
else:
以上条件都不成立时执行的代码
示例:工龄判断
age=int(input('请输入您的年龄:'))
if age<18:
print(f'您的年龄是{age},童工一枚')
elif(age>=18)and{age<=60}:
print(f'您的年龄是{age},合法工龄')
elif age>60:
print(f'您的年龄是{age},达到退休水平')
请输入您的年龄:17
您的年龄是17,童工一枚
4.if 嵌套
if 条件1:
条件1成立执行的代码
条件1成立执行的代码
if 条件2:
条件2成立执行的代码
条件2成立执行的代码
演示示例:坐公交车
money=1 #金额
seat=0 #座位数
if money==1:
print('大富人家,顺利上车')
if seat==1:
print("有空位,可以坐下")
else:
print("没有空座,站等")
else:
print("没钱,不能上车")
大富人家,顺利上车
没有空座,站等
案例分析:猜拳游戏
需求分析:
- 参与游戏的角色
- 随机出拳
- 手动出拳
- 玩家
- 电脑
判断输赢:
玩家 | 电脑 |
石头 | 剪刀 |
剪刀 | 布 |
布 | 石头 |
- 玩家出拳和电脑出拳相同
- 平局
- 电脑获胜
- 玩家获胜
随机做法:
1.导出random模块
import 模块名
2.使用random模块中的随机整数功能
random.randint(开始,结束)
# 导入random模块
import random
# 计算电脑出拳的随机数字
computer =random.randint(0,2)
print(computer)
player =int(input("请出拳:0-石头,1-剪刀,2-布:"))
# 玩家胜利p0:c1或p1:c2或p2:c0
if(player==0 and computer==1) or(player==1 and computer==2) or(player==2 and computer==0):
print("玩家胜利")
elif player == computer:
print("平局")
else:
print("电脑获胜")
2
请出拳:0-石头,1-剪刀,2-布:1
玩家胜利
升级版:猜拳游戏:
import random
import sys
print("---欢迎来到人机对战小游戏---")
name=input("请输入您的游戏名:")
while True:
stats =input("欢迎”%s“来到本游戏,开始游戏输入Y,退出游戏输入N,请您输入:" %name)
if stats =='Y' or stats =='y':
print('游戏开始。。。')
print("0-石头,1-剪刀,2-布")
break
elif stats =='n'or stats=='N':
print("游戏结束。。。")
sys.exit(0)
else:
print("请按照要求重新输入!")
print("--------------加载中-------------")
def Game(user,comp):
if(user==0 and comp==1) or(user==1 and comp==2) or(user==2 and comp==0):
print("机器输入%d,您赢了!" %comp)
elif user==comp:
print('机器输入%d,平局了' %comp)
else:
print("机器输入%d,您输了" %comp)
res=input("重新进入游戏请输入X,退出游戏按任意键")
if res=='X'or res=="x":
return
else:
sys.exit(0)
while True:
user=int(input("请您出拳,输入相应的数字!"))
if user==0 or user==1 or user==2:
comp=random.randint(0,2)
Game(user,comp)
else:
print("输入数字有误,请重新输入!")
请输入您的游戏名:李清流
欢迎”李清流“来到本游戏,开始游戏输入Y,退出游戏输入N,请您输入:y
游戏开始。。。
0-石头,1-剪刀,2-布
--------------加载中-------------
请您出拳,输入相应的数字!0
机器输入0,平局了
重新进入游戏请输入X,退出游戏按任意键x
请您出拳,输入相应的数字!2
机器输入1,您输了
重新进入游戏请输入X,退出游戏按任意键s
6.循环简介
6.1循环的分类:在Python中,循环分为while和for两种,实现效果相同
6.2 while的语法:
while 条件:
条件成立重复执行的代码1
条件成立重复执行的代码2.。。。
while循环案例:
需求:重复执行5次print(“hello,world”)。
i=1
while i<=5:
print("hello,world,第%s次执行" %i)
i+=1
print("执行结束!")
hello,world,第1次执行
hello,world,第2次执行
hello,world,第3次执行
hello,world,第4次执行
hello,world,第5次执行
执行结束!
while的应用一:
计算1-100累加和
i=1
result=0
while i<=100:
result+=i
i+=1
print("输出结果:%s" %result) #5050
应用二:
计算1-100偶数累加和
"""
偶数即是和2取余结果为0的数字,可以加入条件语句判断是否为偶数,为偶数则累加
初始值为0/2,计数器每次累加2
"""
i=1
result=0
while i<=100:
if i%2==0:
result+=i
i+=1
#输出结果2550
print(result)
6.3 break和continue
break和continue是循环中满足一定条件退出循环的两种不同方式。
break和continue都是控制循环流程,break即终止此循环,continue即退出当前一次循环继而执行下一次循环代码。
break示例:
i=1
while i<=5:
if i==4:
print(f'吃饱了不吃了')
break
print(f'吃了第{i}个苹果')
i+=1
"""
吃了第1个苹果
吃了第2个苹果
吃了第3个苹果
吃饱了不吃了
"""
contnue实例:
i=1
while i<=5:
if i==3:
print(f'我喜欢吃苹果,但是第{i}个不吃了')
i+=1
continue
print(f'吃了第{i}个苹果')
i+=1
"""
吃了第1个苹果
吃了第2个苹果
我喜欢吃苹果,但是第3个不吃了
吃了第4个苹果
吃了第5个苹果
"""
6.4 while循环嵌套
while 条件1:
条件1成立执行的代码。。。
while 条件2:
条件2成立执行的代码。。。
while循环嵌套应用
应用一:打印星号(正方形)
#重复打印5行星星
j=0
while j<=4:
#内循环控制打印的星星个数
i=0
while i<=4:
print('*',end='') #一行内的星星不能换行,所以取消print中的换行字符
i+=1
print() #每打印一行进行换行
j+=1
*****
*****
*****
*****
*****
应用二:打印九九乘法表
# 重复打印9行表达式
j=1
while j<=9:
#打印一行里面的表达式a * b=a*b
i=1
while i<=j:
print(f'{i}*{j}={i*j}',end='\t')
i+=1
print()
j+=1
####
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
6.5 for循环
语法:
for 临时变量 in 序列:
重复执行的代码1
重复执行的代码2.。。。
应用:
str='hello,world'
for i in str:
print(i,end="\t")
# h e l l o , w o r l d
七,字符串
字符串是Python中最常用的数据类型,一般使用引号来创建字符串。
a=''hello,world'
b='abcdefg'
print(type(a))
print(type(b))
注意:控制台显示结果为<class 'str'>,即数据类型str(字符串)
1.字符串输入
在Python中,使用input()接收用户输入。
name=input('请输入您的姓名:')
print(f'您输入的姓名是{name}')
print(type(name))
password=input("请输入您的密码:")
print(f'您输入的密码是:{password}')
print(type(password))
-------------!---------
请输入您的姓名:李清流
您输入的姓名是李清流
<class 'str'>
请输入您的密码:123456
您输入的密码是:123456
<class 'str'>
2.下标
下标又称为索引,就是编号。
例如:
字符串name='abcdefg',取到不同下表对应的数据。
name="abcdefg"
print(name[0])
print(name[1])
print(name[2])
a
b
c
3.切片
切片是指对操作的对象截取其中一部分的操作。字符串,列表和,元组都是可以支持切片操作。
语法:序列 [开始位置下标,结束位置下标:步长]
注意:不含结束位置下标对应的数据,正负数均可;步长是选取间隔,正负数均可,默认步长为1
name="abcdefg"
print(name[2:5:1]) #cde
print(name[2:5]) #cde
print(name[:5]) #abcde
print(name[1:]) #bcdefg
print(name[:]) #abcdefg
print(name[::2]) #aceg
常用操作方法:
- find():检测某个字串是否包含在这个字符串中,如果在,返回这个字串开始位置的下标,否则则返回-1;语法格式:字符串序列.find(字串,开始位置下标,结束位置下标)
- index():检测某个字串是否包含在这个字符串中,如果在,则返回这个字串出现的开始位置下标,否则报异常;语法格式:字符串序列.index(字串,开始位置下标,结束位置下标)
mystr="hello world and apple and oranges and Python"
print(mystr.find('and')) #12
print(mystr.find('and',15,30)) #22
print(mystr.find('ands')) #-1
mystr="hello world and apple and oranges and Python"
print(mystr.index('and')) #12
print(mystr.index('and',15,30)) #22
print(mystr.index('ands')) #报错
- rfind():和find()功能相同,但查找方向为右侧开始。
- rindex():和index()功能相同,但查找方向为右侧开始。
- count():返回字串在字符串中出现的次数。语法格式:字符串序列.count(字串,开始位置下标,结束位置下标)
- replace():替换字符串。字符串序列.replace(旧字串,新字串,替换次数)
- split():按照指定字符分割字符串。语法格式:字符串序列.split(分割字符,num);num表示的是分割字符出现的次数,即将来返回数据字数为num+1个。
- join():用一个字符或字串合并字符串,即是将多个字符串合并为一个新的字符串。语法:字符或字串.join(多字符串组成的序列)
八.列表
1.格式:[数据1,数据2,数据3,数据4.。。。。]
列表的常用操作:增,删,改,查
例如:查询
- index():返回指定数据所在的位置的下标。语法:列表序列.index(数据,开始位置下标,结束位置下标)
- count():统计指定数据在当前列表中出现的次数。
- len():访问列表长度,即列表数据的个数。
name_list=['Tom','Lily','Rose']
print(len(name_list)) #3
print(name_list.count('Lily')) #1
print(name_list.index('Lily',0,2)) #1
2.判断是否存在
- in:判断指定数据在某个列表序列,如果在返回True,否则返回False.
- not in:判断指定数据不在某个列表序列,如果在返回True,否则返回False.
name_list=['Tom','Lily','Rose']
print('Lily' in name_list) #True
print('Lilys' in name_list) #False
print('Lily' not in name_list) #False
print('Lilys' not in name_list) #True
3.增加
作用:增加指定数据到列表中。
- append():列表结尾追加数据。语法:列表序列.append(数据)
- extend():列表结尾追加数据,如果数据是一个序列,则将这个序列逐一添加到列表。语法:列表序列.extend(数据)
- insert():指定位置新增数据。语法:列表序列.insert(位置下标,数据)
name_list=['Tom','Lily','Rose']
name_list.append("xiaoming")
#print(name_list) #['Tom', 'Lily', 'Rose', 'xiaoming']
name_list.append(['xiaoming','xiaohong'])
print(name_list) #['Tom', 'Lily', 'Rose', 'xiaoming', ['xiaoming', 'xiaohong']]
name_list.insert(1,'yingying')
print(name_list) #['Tom', 'yingying', 'Lily', 'Rose', 'xiaoming', ['xiaoming', 'xiaohong']]
4.删除
- del 目标
- pop():删除指定下标的数据(默认为最后一个),并返回该数据,
- clear():清空列表。
name_list=['Tom','Lily','Rose']
# del name_list
print(name_list) #IndentationError: unexpected indent
#del name_list[0]
print(name_list) #['Lily', 'Rose']
del_name=name_list.pop(1)
print(del_name) #Lily
name_list.clear()
print(name_list) #[]
5.修改
- 逆置:reverse()
- 排序:sort()
name_list = ['Tom', 'Lily', 'Rose']
name_list[0]='aaa'
print(name_list) #['aaa', 'Lily', 'Rose']
num_list=[1,5,3,9,8,6]
num_list.reverse()
print(num_list) #[6, 8, 9, 3, 5, 1]
num_list.sort()
print(num_list) #[1, 3, 5, 6, 8, 9]
列表的循环遍历
1.while 或for
name_list = ['Tom', 'Lily', 'Rose']
i=0
while i<len(name_list):
print(name_list[i])
i+=1
for i in name_list:
print(i)
九,元组
一个元组可以存储多个数据,元组内的数据是不能修改的。元组使用小括号,且逗号隔开各个数据,数据可以是不同的数据类型。
#多个数据元组
t1=(10,20,30)
#单个数据元组
t2=(10,)
print(type(t2)) #tuple
t3=(20)
print(type(t3)) #<class 'int'>
t4=('HELLO')
print(type(t4)) #<class 'str'>
2.元组常见操作
元组数据不支持修改,只支持查找。