数据类型与逻辑运算
数据类型
数据类型分为整型、浮点型、列表、字符串和字典
整型 Int
大白话就是整数
应用场景:年龄、班级人数
eg:
name = 'kevin'
age = 18
stu_sum = 56
浮点型 Float
用计算机语言就是小数的数据值
应用场景:身高、体重
eg:
name = ’kevin'
haight = 1.65
weight = 45.6
字符串 String
用计算机语言就是文本的数据类型:引号引起来的部分都是字符串
引用场景:姓名
eg:
name = '康辉'
addr = '北京'
Bobby = '看书'
定义字符串有四种方式
eg:
['小七', '小五', '张三']
[11,22,33,44,55,66,77]
索引值对应的数据值
[11,22,33,44,55,66,77]
[0,1 ,2,3,4,5,6]
字典 Dict
字典一般是以键值对(k:v)的形式存在,一般只要取到键值对的k,对应就是v的值,键值对与键值对之间逗号隔开,字典是无序
eg;
{'name':'kevin',
'age':16
'year':18
'hometown':'云南'}
布尔常量bool
1.常用来判断事物的对错,是否可行,只用于流程控制
2.只要两种状态
True 对的 真的 可行的
False 错的 假的 不可行的
3.python中所有数据都自带布尔值
布尔值为false的数据有:0 None '' [] {}
布尔值为True的数据有:除了上述的都是True
4.存储布尔值的变量名一般推荐使用is 开头
is_delete = False
is_alive = True
"""
很多程序中提供的注销账户的功能 其实底层并没有删除数据 而是修改了数据的状态
id username password phone is_delete
1 jason 123 110 1
2 kevin 321 120 0
"""
元组tuple
1.元组也称为'不可变'的列表
元组内索引绑定的内存地址不能修改
2.元组是用小括号括起来 ,内部存放多个数据值,数据值与数据值之间是用逗号隔开,数据值可以是任意任何数据类型
3.代码实现:
eg: a1 = (1, 24, 'kevin')
4.元组与列表的对比
l = [11,22,33]
print(l[0]) # 获取0对应的值
l[0]=666
print(l) # [666, 22, 33]
b = (11, 22, 33)
print(b[0]) # 获取0对应的值
b[0] = 888
print(b) # 报错
注意:元组是不可变的列表
eg: B
c = (11, 22, [345, 566])
c[2][1] = 888
print(c) # (11, 22, [345, 888])
"""
A.直接报错
B.(11, 22, [345, 888])
C.不知道,超出了我的认知
5.元组内如果只有一个数据值
# 元组内只有一个数据值
# 第一种情况下
d1 = (1)
d2 = (22.22)
d3 = ('kevin')
print(type(d1), type(d2), type(d3)) # <class 'int'> <class 'float'> <class 'str'>
# 第二种情况下
d4 = (1,)
d5 = (22.22,)
d6 = ('kevin')
print(type(d4), type(d5), type(d6)) # <class 'tuple'> <class 'tuple'> <class 'str'>
以后在使用可以存放多个数据值的数据类型时,如果里面暂时只有一个数据值,那么也建议你加上逗号
集合set
-
集合只能用于去重和关系运算
后面详细讲
-
集合内数据只能是不可变类型
后面详细讲
-
大括号括起来,内部存放多个数据值,数据值与数据值之间逗号隔开,数据值不是k:v键值对
-
代码的实现
eg: a1 = {1, 2, 3, 4, 5, 6}
-
定义空集合与空字典
{} 默认是字典 set() 定义空集合
eg:
k1 = {}
k2 = {}
se =set()
print(type(k1)) # <class 'dict'>
print(type(k2)) # <class 'dict'>
print(type(se)) # <class 'set'>
空集合一定要set()
与用户交互
"""
以前银行取钱只能拿着存折去柜台跟柜姐交流才可以
你想干嘛 我想取钱
请输入密码 滴滴滴密码
想取多少钱 我想取一万
...
随后程序代替了小姐姐跟我们交互
ATM机器
"""
-
获取用户输入,使用input
input # 获取用户的输入 username = input('请输入您的用户名:') #请输入您的用户名:花花 """ 1.先执行input 获取用户输入 2.将输入的数据绑定给变量名 3.以后在程序中就可以使用变量名反复调用用户数据 """
强调:input 获取到的数据都会统一处理成字符串类型
-
输出内部信息
print() 1.括号内既可以放数据值也可以放变量名,并且支持多个数据值(变量名),之间用逗号隔开即可 2.print 自带换行符 换行符: \r\n \n (斜杠与字母组合到一起可能产生特殊的含义) 3.print 也可以切换结束符 print(数据,end='默认是\n' )
扩展: python2与python3中两个关键字的区别 python2中 input 方法需要用户自己提前指定数据类型,写什么类型就是什么类型 raw_input 方法与python3 中的input一致 输入的统一处理成字符串 python2中 print方法有两种使用方式 print 数据值 print(数据值) eg: input #获取数据 date = input('请输入数据:') print(type(date)) # 得到的是字符串<class 'str'>
格式化输出
提前定义好一些内容,将来需要使用的时候可以局部修改
eg: 奖状、录取通知书、合同
代码实现:
现实生活中用下划线提示别人要填写的内容
在程序中需要使用占位符: %s %d
"""
单个占位符
"""
info = '%s同学您好'
print(info % 'kevin' ) # kevin同学您好
print('%s 同学你好' % '小七') #小七 同学你好
print('%s 朋友你好' %('kiki',)) # kiki 朋友你好
"""多个占位符"""
dr = '姓名:%s, 年龄:%s, 爱好:%s'
print(dr % ('kimi', 18,'listening')) # 姓名:kimi, 年龄:18, 爱好:listening
print('姓名:%s, 年龄:%s, 爱好:%s' %('kiki', 18, '画画')) # 姓名:kiki, 年龄:18, 爱好:画画
注意事项:
print('my name is %s my age is %s' % ('kiki',)) #少了不行
print('my name is %s my age is %s' % ('kiki',18, 'read')) #多了也不行
"""不同占位符的区别"""
demo1 = '%s 您好,你的银行余额为%s,请确认你的预留手机号%s'
print(demo1 % ('kimi',234555,1318655)) # kimi 您好,你的银行余额为234555,请确认你的预留手机号1318655
%s 常见的数据类型都支持
%d 支持数字类型
demo1 = '%d 您好,你的银行余额为%d,请确认你的预留手机号%d'
print(demo1 % ('kimi',234555,45)) # %d format: a number is required, not str
print('%08d'% 123) # 00000123
print('%08d'% 1234324324) # 1234324324
运算符
基本运算符
算数运算符
python支持的算术运算符与数学上计算机的符号使用是一致的,并在此基础稍作变化
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c=a+b将z+b的运算结构赋值为c |
+= | 加法赋值运算符 | c += a 等效于c = c+ a |
-= | 减法赋值运算法 | c -= a 等效于c = c- a |
*= | 乘法赋值运算符 | c *= a 等效于c = c *a |
/= | 除法赋值运算符 | c /=a 等效于c = c /a |
%= | 取模赋值运算符 | c % = a 等效于 c = c %a |
**= | 幂赋值运算符 | c **= a 等效于c = c **a |
//= | 取整数赋值运算符 | c//= a 等效于c = c//a |
比较运算符
比较运算用来对两个值进行比较,返回的是布尔值True 或False
比较运算符 | 名称 | 实例 | 结果描述 |
---|---|---|---|
== | 等于 | x==y | 如果x恰好等于y,则为真 |
!= | 不等于 | x!=y | 如果x恰好不等于y, 则为真 |
> | 大于 | x>y | 如果x大于y,则为真 |
< | 小于 | x<y | 如果x小于y,则为真 |
>= | 大于或等于 | x>=y | 如果x大于或等于y,则为真 |
<= | 小于或等于 | x<=y | 如果x小于或等于y,则为真 |
常用运算符
链式赋值
name = 'kevin'
name1 = name
name2 = name1
# 链式赋值
print(name2) #name2= name1 = name='kevin'
链式赋值可以用一行代码搞定这件事
a=b=c=10
print(a,b,c) #(10,10,10)
交叉赋值
如果要想把m和n的值交换过来,可以这么做
# 方式1:采用中间变量
temp = m
m = n
n = temp
print(m,n) #100 200
# 方法2: 交叉赋值语法
m, n= n, m
print(m,n) #100 200
解压赋值
name_list = ['amy', 'kiki', 'aby', 'kevin' ]
"""low 的写法"""
name1 = name_list[0]
name2 = name_list[1]
name3 = name_list[2]
name4 = name_list[3]
print(name1, name2, name3,name4)
""" 解压赋值语法"""
name1, name2, name3, name4 = name_list
print(name1, name2, name3,name4)
""" 解压赋值在使用的时候,正常情况下需要保证左边的变量名和右边的数据值个数一致"""
name1, name2 =name_list #变量名少了不行>>>:ValueError: too many values to unpack (expected 2)
name1, name2, name3, name4, name5 = name_list # 变量名多了也不行>>>:ValueError: not enough values to unpack (expected 6, got 5)
"""当需要解压的数据个数特别多,并且我们只需要使用其中的几个,那么可以打破上述的规则"""
a, *b = name_list # * 会自动接收多余的数据,组成列表赋值给后面的变量名
print(a,) # amy
print(*b) # kiki aby kevin
c, d, *k = name_list
print(c) # aby
print(d) # kiki
print(*k) # aby kevin
e, *f, g =name_list
print(e) # amy
print(*f) # kiki aby
print(g) # kevin
""" 当数据值不准备使用的时候,可以使用下划线作为变量名绑定"""
a,*_,c = name_list
ps:字符串、字典、元组、集合类型都支持解压赋值
逻辑运算符
逻辑运算符用于连接多个条件,进行关联判断,会返回布尔值True或False
链接多个and
可以用and连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为False,则无需再往右判断,可以立即判定最终结果就为False,只有在所有条件的结果都为True的情况下,最终结果才为True。
print(1 < 10 and 666) # 666 成立
print(1 < 10 and 2 < 8) # True 成立
print(111 and 222) # 222 成立
如果需要你准确的说出具体的结果值 那么需要按照下列方式
如果and左边的条件是成立的 那么就完全取决于右边的条件
右边如果直接是数据值 那么结果就是该数据值 如果是含有表达式 则为布尔值
多个or
可以用or连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为True,则无需再往右判断,可以立即判定最终结果就为True,只有在所有条件的结果都为False的情况下,最终结果才为False
1 > 2 or 4 < 8 or 10 < 1 or 1 == 2 如果条件中全部由or组成那么判断起来非常的简单 只要发现一个成立 结果就成立
# print(1 < 10 or 666) # True
# print(666 or 1 > 10) # 666
print(0 or False) # False
print(0 or 111) # 111
规律用and
not 非
取反
类似于说反话
三种混用
"""
三者混合使用的时候有优先级之分 但是我们不需要记忆优先级 应该通过代码的形式提前规定好优先级
eg: 先乘除有加减 但是可以使用括号来改变优先级
(3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)
"""
成员运算符
name_list = ['jason', 'kevin', 'oscar', 'jerry']
print('kiki' in name_list) # False
print('kiki' not in name_list) #True
print('j' in name_list) # False 列表最小单位是数据值再细分
s1 = 'hello world'
print('d' in s1) #字符串最小单位是单个单个的字符
d1 = {
'username': 'kiki',
'pwd': 1318888
}
print('kiki' in d1) # False 字典成员运算只有键参与
print('username' in d1) # True 'username' 'pwd'
身份运算符
需要强调的是:==双等号比较的是value是否相等,而is比较的是id是否相等
"""
id() 返回一串数字 该数字可以看成是内存地址
"""
is 判断内存地址是否相同
== 判断数据值是否相同
l1 = [11, 22, 33, 44, 55, 66, 77, 88]
l2 = [11, 22, 33, 44, 55, 66, 77, 88]
print(l1==l2) # True
print(id(l1)) # 1938852130688
print(id(l2)) # 1938851977152
print(l1 is l2) #False
# 小整数池
i1 = 11
i2 = 11
print(i1 is i2) # True
s1 = 'jason jason jason'
s2 = 'jason jason jason'
print(s1 is s2) # True
不同的环境下可能优化的程度不一样
"""
了解
值相同 内存地址可能不同
内存地址相同 值肯定相同
"""
作业:
问题:2.获取用户输入并打印成下列格式
------------ info of Jason -----------
Name : Jason
Age : 18
Sex : male
Job : Teacher
---------------- end -----------------
答案:
# 第一版本
print('------------ info of Jason -----------')
input('Name:')
input('Age:')
input('Sex:')
input('Job:')
print(' ---------------- end -----------------')
# 第二版本
user_name = input('请输入您的用户名:')
user_age = input('请输入您的年龄;')
user_sex = input('请输入您的性别:')
user_jod = input('请输入您的工作:')
t1 = (user_name, user_name, user_age, user_sex, user_jod)
print('------------ info of %s -----------\n'
'Name:%s\n'
'Age:%s\n'
'Sex:%s\n'
'Job:%s\n'
' ---------------- end -----------------' % t1)
标签:逻辑运算,name,list,数据类型,运算符,print,input,True
From: https://www.cnblogs.com/zhanglanhua/p/16732626.html