五,Python基础(2)
1.数据类型基础
(一)什么是数据类型?
用于区分变量值的不同类型。
(二)为何对数据分类?
针对不同状态就应该用不同类型的数据去标识。
(三)数据类型分类
1.数字类型
1.1整型(int)
1.11作用
表示人的年龄、各种号码、级别
1.12定义
age = 24 # age=int(24)
print(id(age))
print(type(age))
print(age)
1982099648
<class 'int'>
24
1.13如何用
加减乘除、逻辑判断(大于、小于)
print(a+b)
print(a-b)
print(a*b)
print(a/b)
.....
1.2浮点型(float)
1.21作用
表示身高、体重、薪资
1.22定义
money = 2.5 # money=float(2.5)
print(id(money))
print(type(money))
print(money)
244287541632
<class 'float'>
2.5
1.23如何用
加减乘除、逻辑判断(大于、小于)
2.字符串类型(str)
2.1作用
表示名字、性别、爱好等
2.2定义
name='sanpao'
hobby='wanle'
print(type(name1))
print(name+hobby)
2.3如何用
字符串只能加、乘和逻辑比较
不同数据类型不能拼接
字符串的拼接,即重新申请一个小空间把两个字符串都拷贝再拼接
3.列表类型(list)
3.1作用
例如存取一个人的爱好
3.2定义
在[]内用逗号隔开任意类型的值
list=['name','height','weight','age']
print(list)
3.3如何用
存不是目的,取才是目的
list=['name','height','weight','age']
# 索引序号 0 1 2 3
#取出第三位
print(list[2])
4.字典类型(dict)
4.1作用
用来存取多个值,按照key : value的方式存值,取得时候可以通过key而非索引去取值,key对value具有描述性的作用,存放数据的种类,各种各样且数据较多的时候可以使用字典。
4.2定义
在{}内用逗号分割开多个元素,每一个元素都是key:value的格式,其中value是任意格式的数据类型,由于key具有描述性的作用,所以key通常是字符串类型
dict={'name':'mahua','gender':'male','age':18,'power_info':['oldboy','shanghai','hongqiao']}
4.3如何用
字典取值方式不再依赖于索引,而是依赖于key,通过key即可获取对应value值。
5.布尔类型(bool)
5.1作用
用于判断条件结果
5.2定义
true、false通常情况不会直接引用,需要使用逻辑运算得到结果。
5.3如何用
print(type(true))
print(true)
print(bool(1>2))
print(bool(1==1))
注意:Python中所有数据类型的值自带布尔值,如此多的数据类型中只需要记住只有0、None、空、False的布尔值为False,其余的为True.
2.解压缩
解压缩可以理解为我们去酒庄存了多瓶酒,然后我们到了时间把这些酒一次性全部取出来。
name_list = ['mahua','guapi','shadiao','doubi']
x,y,z,k=name_list
print(f'x:{x},y:{y},z:{z},k:{k}')
x:mahua,y:guapi,z:shadiao,k:doubi
如果遇到一些我们不想要的酒,过期了,想丢掉的话,那么我们可以用下划线,无所不能的下划线
name_list = ['mahua','guapi','shadiao','doubi']
x,y,z,k=name_list
x,_,z,_=name_list
print(x,z)
mahua shadiao
还有一种方法就是添加一个星号*与下划线相乘可以代替一段连续的下划线,方便简洁。
name_list = ['mahua','guapi','shadiao','doubi']
x,y,z,k=name_list
x,*_,k=name_list
print(x,k)
print(*_)
mahua doubi
guapi shadiao
字典也是用来解压缩,但字典解压缩的是key
dict={'name': 'mahua', 'age': 24}
x, y=dict
print(x, y)
name age
3.Python与用户交互
一、为什么要交互?
计算机的发明是为了奴役计算机,我们写程序就是用来跟计算机交互,不然我们写程序将毫无意义。
二、如何交互?
name=input('你的姓名:')
print(name*10)
name = input('请输入你的姓名')
pwd = input('请输入你的密码')
input作用只是接收值
4.格式化输出的三种方式
一、占位符
%s(针对所有数据类型)、d%(仅仅针对数字类型)
name='magua'
age =24
print('my name is %s my age is %s' % (name ,age)) (占位符)
print('my age is %d' %(age))
name1='guapi'
height=180
print('my name is %s,my age is %s'%(name1,height))
二、format格式
name='magua'
age=24
print("hello {},you are {}.".format(name,age))
三、f-string格式化
name ='magua'
age = 24
print(f"hello,{name}.you are {age}.") #大小写f都可以。
5.基本运算符
一、算术运算符:
x=10
y=20
print(x+y)
print(x-y)
print(x*y)
print(x/y)
print(x%y)
print(x//y)
print(x**y)
二、比较运算符:
z=10
k=20
print(z<k)
print(z>k)
print(z>=k)
print(z<=k)
print(z==k)
print(z!=k)
三、赋值运算符:
a=10 #(一元赋值运算符)
b=20
a += b #相当于a=a+b #二元赋值运算符
print(a)
b += 10
print(b)
a -= b
print(a)
a *= b
print(a)
a /= b
print(a)
a **= b
print(a)
a //= b
print(a)
a %= b
print(a)
四、逻辑运算符:
# and
print(True and True) # true #两个为真才能为真
print(True and False) # false
print(1<2 and 2>3) # false
# or
print(True or False) #true 有一个为真即为真
print(False or False) #false
# not # 非,不是。
print(not False) # true
print(not True) # false
print(not 1>2)
五、身份运算符:
d=1000
c=1002
print(d is c)
print(d is not c)
print(not c is d)
六,运算符优先级
print(not c is d**2) #建议加括号
#True为1,False为0
print(True>0)
print(False<1)
6.流程控制之if判断
模拟人做判断
1.if
学什么都是为了让计算机向人一样工作,我们无时无刻都在判断。路边路过一个生物,你会判断两个人是不是会表白?首先会判断这个生物是不是人类,并且这个人类是个女人,年龄大于18小于20几岁。你首先需要记录一堆数据,然后才会用你的大脑去判断。if表示if成立代码成立会干什么。
if 条件:
代码1
代码2
代码3
...
# 代码块(同一缩进级别的代码,例如代码1、代码2和代码3是相同缩进的代码,这三个代码组合在一起就是一个代码块,相同缩进的代码会自上而下的运行)
cls = 'human'
gender = 'female'
age = 18
if cls == 'human' and gender == 'female' and age > 16 and age < 22:
print('开始表白')
print('end...')
2.if...else
if 条件:
代码1
代码2
代码3
...
else:
代码1
代码2
代码3
...
if...else表示if成立代码成立会干什么,else不成立会干什么。
light = "green"
if light=='green':
print('通过')
else:
print('等待')
- if...elif...else
if 条件1:
代码1
代码2
代码3
...
elif 条件2:
代码1
代码2
代码3
...
elif 条件3:
代码1
代码2
代码3
...
...
else:
代码1
代码2
代码3
...
if...elif...else表示if条件1成立干什么,elif条件2成立干什么,elif条件3成立干什么,elif...否则干什么。
age=input('your age:')
age=int(age)
if age>18:
print('猜大了')
elif age<18:
print('猜小了')
else:
print('猜对了')
4.if的嵌套
给定一个年龄,判断他是否猜对或猜大猜下,然后该怎么做。
age=18
inp_age=int(input("age:"))
if age <= inp_age:
if age < inp_age:
print('猜大了')
else:
print('猜对了')
break
else:
print('猜小了')
7.流程控制之while循环
什么是循环呢?我们每天早上起床,上课,休息,每天都重复这几件事,这就是循环。
while循环又称为条件循环。
1.whil+break
break的意识是终止掉当前层的循环,执行其他代码。
while True:
name = ('cxk')
key = ('rap')
inp_user=input('请输入用户名:')
inp_pwd=input('请输入密码:')
if name == inp_user and key == inp_pwd:
print('登陆成功')
break #跳出本层循环
else:
print('登陆失败')
2.while+continue
continue的意思是终止本次循环,直接进入下一次循环。
n = 1
while n < 4:
print(n)
n += 1
n=1
while n<10:
if n == 5:
n += 1
continue #跳出本次循环
n += 1
print(n)
n=1
while n<10:
if n == 5:
n += 1
continue #跳出本次循环
n += 1
print(n)
continue不能加载循环体的最后一步执行的代码,因为代码加上去毫无意义,如图所示的continue所在的位置就是毫无意义的,注意是最后一步执行的代码,而不是最后一行。
3.while循环的嵌套。
#退出内层循环的while嵌套:
while True:
name = ('cxk')
key = ('123')
inp_name=input('用户名:')
inp_key =input('密码:')
if inp_name==name and inp_key==key :
print('登陆成功')
while True:
older=input('请输入指令')
if older=='esc':
print('退出登录')
break
else:
print('操作成功')
else:
print('登陆失败')
#打印1-1000之间偶数之和
n=1
count=0
while n<1001:
if n%2==0:
count+=n
n+=1
print(count)
print((1+1000)*1000/2/2)
#循环登陆,输入密码三次退出,
count=0
user_name=('cxk')
pwd_key=(123)
while count<3:
name=input('账号:')
key =int(input('密码:'))
if name==user_name and key == pwd_key:
print('登陆成功')
break
else:
print('登陆失败')
count+=1
4.while+else
n = 1
while n < 3:
print(n)
n += 1
else:
print('else会在while没有被break时才会执行else中的代码')
注意:else会在while没有被break时才会执行else中的代码
while循环会进入死循环(不可控),尽量少使用
世间万物(所有数据类型都可以)作为循环的对象。
8.流程控制之for循环
1.为什么有了while循环,还会有for循环呢?如果我们要从字典里取值,那我们只能用到for 循环了。
dict = {'name':'cxk','age':98}
for i in dict:
print(i)
2.for循环的循环次数受限于容器类型的长度,且不会进入死循环,是可控的,而while循环的循环次数需要自己控制,for循环也可以按照索引取值。for循环只对容器类数字类型循环()
for i in range(1,10):
print(i)
3.for+break
跳出本层循环
for i in range(1,10):
if i==5:
break #跳出本层循环
print(i)
4.for+continue
for i in range(1,10):
if i==6:
continue #跳出本次循环
print(i)
5.for循环嵌套
外层循环循环一次,内层循环循环所有。
*打印九九乘法表
for i in range(1,10):
for j in range(1,10):
k=i*j
print(f'%d*%d=%d '%(i,j,k),end='')
if i==j:
break
print()
6.for+else
for循环没有被break的时候触发else内部代码块。
name_list=['cxk','magua','james']
for i in name_list:
print(i)
else
print('over')
7.for循环实现loading.
print("loading",end='')
for i in range (6):
print('.',end='')
9.Python基础实战之猜年龄游戏
编写猜年龄游戏,有以下要求:
-
可能会有用户会在输入年龄之后不小心输入空格,如18 ,请做处理
-
可能会有用户会恶意输入导致程序报错,如
逗你玩呀
,请做处理 -
如果用户3次没有猜对,可以选择继续玩或退出(自定义退出条件)
-
如果用户猜对了,可以在以下奖品中选择两件奖品(一次只能选择一件奖品):{1:'辣条',2:'小猪佩奇',3:'蔡徐坤',4:'Python从删库到跑路'}
-
用户选择奖品后退出程序,用户也可以不选择奖品直接退出程序。
age = 18 count = 0 liwu={1:'辣条',2:'小猪佩奇',3:'蔡徐坤',4:'Python从删库到跑路'} while count<3: age_1=input('请输入年龄:') if not age_1.isdigit(): continue age_1=int(age_1) if age==age_1: print('猜对了哦,真棒') print(f'请选择你的礼物(n放弃):',liwu) for i in range(2): choice = input() if choice=='n': break print(f'恭喜你获得了:,{liwu[int(choice)]}') break elif age_1<18: print('猜小了,继续努力') else: print('猜大了,继续努力') count+=1 while count==3: keep=input('是否继续(Y继续,N退出)') if keep=='Y': count=0 elif keep=='N': break else: print('输入有误,请重新输入')