Python基础入门(四)

Python基础入门(四)

一、基础数据类型之布尔值bool

布尔值反应条件的正确与否,主要用于流程控制中。

1、布尔值就两种:TRUE,FALSE。

True	对的 真的 可行的
False	错的 假的 不可行的

2、Python中所有数据都自带布尔值

布尔值为False的数据有:0,None,'',[ ],{ }

布尔值为True的数据有:除了上面代表FALSE的数据,其余都是。

3、存储布尔值的变量名一般推荐使用is开头

is_delete = False
is_alive = True

ps:许多程序的注销账户的功能,并未真正删除底层数据,仅仅是修改了数据的状态而已。

例:
id		username	password    phone    is_delete
1		jason		123		   110     	 1
2		kevin		321		   120		 0
上例中当我们注销账户时is_delete这部分仅仅是将0变成了1,我们以为信息已经删除了,但是重要的信息如(phone)这部分并未改动。

二、基础数据类型之元组tuple

1、Tuple的创建

Tuple的值用小括号括起来,括号内部存放多个数据值。数据值与数据值之间逗号隔开,数据值可以是任何数据类型。

  • 例:班里同学姓名
    T = ('rose','lisa','nancy','bob')
        年龄,年份,姓名
    t1 = (11, 2022, 'Tom')
    
  • 创建Tuple和list唯一不同之处是用()替代了[]

  • Tuple是另一种有序的列表,也称为“元组”。Tuple和List十分相似,但是Tuple一旦创建完毕,就不能修改了。

2、元组也称为"不可变"的列表,元组内索引绑定的内存地址不能修改。

3、元组与列表的对比

 # l1 = [11, 22, 33]
    # print(l1[0])  # 获取索引0对应的数据值
    # l1[0] = 666
    # print(l1)  # [666, 22, 33]

    # t1 = (11, 22, 33)
    # print(t1[0])
    # t1[0] = 999
    # print(t1)

    t1 = (11, 22, [111, 222])
    t1[2][1] = 666
    print(t1)
    """
    A.直接报错
    B.(11, 22, [111, 666])正确选项
    C.不知道 超出了我的认知
    """

4、元组内如果只有一个数据值

在使用可以存放多个数据值的数据类型时,如果里面暂时只有一个数据值,也建议加上逗号。

    t1 = (1)
    t2 = (11.11)
    t3 = ('jason')
    print(type(t1), type(t2), type(t3))  # <class 'int'> <class 'float'> <class 'str'>
    t1 = (1,)
    t2 = (11.11,)
    t3 = ('jason',)
    print(type(t1), type(t2), type(t3))  # <class 'tuple'> <class 'tuple'> <class 'tuple'>

三、基础数据类型之集合set

  • set集合是一个无序不重复元素的集,基本功能包括关系测试和消除重复元素。

  • 集合使用大括号{}框定元素,并以逗号进行分隔,数据值不是k:v键值对。

    s1 = {1, 2, 3, 4, 5, 6}
    
  • 如果创建一个空集合,必须用set()而不是{},因为{}创建的是一个空字典。

    {}       默认是字典
 	set()	定义空集合
  • 集合数据类型的核心在于自动去重。

四、与用户交互

以ATM机器为例,在ATM机器被制造出来之前,存取款需要去银行柜台与柜台服务人员沟通。现在一个ATM机器取代了柜员,我们要在这台ATM上取款,那么这个ATM就会要求我们输入姓名、密码以及输入需要提款的金额。这就可以理解为一种交互。

程序的运行都是有先后顺序的,不会整个全部执行完。

1、获取用户输入

username = input('请输入你的用户名')
  • 先执行input获取用户输入的数据
  • 将输入的数据绑定给变量名username
  • 今后在程序中就可以使用变量名反复调用用户数据

ps:input获取到的数据都会统一处理成字符串数据类型

2、输出内部信息

print
1.括号内既可以放数据值也可以放变量名,并支持多个,用逗号隔开
2.print自带换行符
  换行符:\r\n\n(斜杠与字母组合到一起可能会产生特殊的含义)
3.print也可以切换结束符
  print(数据,end='默认是\n')

3、python2与python3中两个关键字的区别

python2中

  • input方法需要用户自己提前指定数据类型 写什么类型就是什么类型
  • raw_input方法与python3中input一致,输入的统一处理成字符串

python2中

  • print方法有两种使用方式
    print 数据值
    print(数据值)

五、格式化输出

格式化输出就是按照一定的格式输出内容。

image

   eg:奖状、录取通知书、合同
   在现实生活中大部分情况下使用下划线提示别人填写内容。
  但是在程序中需要使用占位符:%s %d
info = '%s同志你好'
'''单个占位符'''
# print(info % 'Jason')  # Jason同志你好
# print('%s同志你好' % 'Tony')  # Tony同志你好
# print(info % ('jason',))
# print('%s同志你好' % ('Tony',))
'''多个占位符'''
# desc = '姓名:%s 年龄:%s 爱好:%s'
# print(desc % ('jason', 18, 'read'))
# print('姓名:%s 年龄:%s 爱好:%s' % ('tony', 28, 'rap'))
'''注意事项:有几个占位符就需要几个数据值'''
# print('my name is %s my age is %s' % ('jason',))  # 少了不行
# print('my name is %s my age is %s' % ('jason', 18, 'read'))  # 多了不行
'''不同占位符的区别'''
# demo1 = '%s您好 您本月的话费是%s 余额是%s'  # %s常见数据类型都支持
# print(demo1 % ('jason', 100, 10000000000000))
# demo2 = '%d您好 您本月的话费是%d 余额是%d'  # %d只支持数字类型
# print(demo2 % ('tony', 1000000000, -100000))

print('%08d'% 123)  # 00000123,数据值未满8位数用0自动填充,存折余额
print('%08d'% 1234324324)  # 1234324324 数据值超过设定的位数以数据值为准。

六、基本运算符

1.数学运算符

    + - * / % // **
    简化写法
    n = 10
    n += 1  # n = n + 1
    n -= 1  # n = n - 1
    n *= 1  # n = n * 1
    n /= 1  # n = n / 1
    n %= 1  # n = n % 1
    n //= 1  # n = n // 1
    n **= 1  # n = n ** 1

2.比较运算符

< > <= >= ==(等于号) !=(不等于)

七、常用赋值符

1.链式赋值

  • Python语言中,在同一值不变情况下,分别赋值给多个变量时,可以使用链式赋值方法进行赋值
    x = 10
    y = 10
    z = 10
    x = y = z = 10

2.交叉赋值

  • 交换两个变量的值
    m = 100
    n = 999
    '''让m和n互相转换绑定的值'''
    """奇葩式写法"""(大错特错)
    # m = n
    # n = m
    # print(m, n)  # 999 999
    '''方式1:采用中间变量'''
    # temp = m
    # m = n
    # n = temp
    # print(m, n)  # 999 100
    '''方式2:交叉赋值语法'''
    m, n = n, m
    print(m, n)  # 999 100

3.解压赋值

  1. 将列表中的多个值全部取出来依次赋值给多个变量名
#将列表中的多个值取出来依次赋值给多个变量名,可以这么做
myList = [1,2,3]
a = myList[0]
b = myList[1]
c = myList[2]

#利用解压赋值
a,b,c = myList #包含多个值,就好比一个压缩包,解压赋值因此得名
print(a,b,c) #1 2 3

#上述解压赋值,等号左边的变量名个数必须与右面包含值的个数相同,否则会报错
a,b = myList
# ValueError: too many values to unpack (expected 2)

a,b,c,d = myList
# ValueError: not enough values to unpack (expected 4, got 3)

2、将列表中的多个值部分取出来依次赋值给多个变量名
可以将不取的多个部分用*_代替,单个值用_代替。
# 将列表中的前两个值取出赋值给变量a,b
myList1 = [1,2,3,4,5]
a,b,*_ = myList1
print(a,b) # 1 2
print(*_) # 3 4 5
print(_) # [3,4,5]

#将列表中前一个值和最后两个值取出赋给变量a,b,c
a,*_,b,c = myList1
print(a,b,c) # 1 4 5
print(*_) # 2 3
print(_) # [2,3]

#将列表中的前一个值赋值给a,最后一个值赋值给b,第二个给_,第3,4个为列表
a,_,*_,b = myList1
print(a,b) # 1 5
print(*_) # 3 4
print(_) # [3,4]
# 列表中值2"消失"了。单个 _ 表示该变量被废弃

  • 多个指定的数据类型都可以解压
  • 可用于字符串, 列表,元组,字典,集合,多用于列表,元组
  • 如果用于字典,则解压的结果是 key
  • 使用 *_ 来将剩余的值存成一个列表(单个 _ 表示该变量被废弃)
  • _ 可以赋值给其他变量,或再使用解压赋值赋值给多个变量

八、逻辑运算符

  1. 与或非
运算符种类 符号 代码示例 运算结果 备注说明
and 1 and 0 False 条件都为真是结果为真
or 1 or 0 True 条件都为假是结果为假
not not 0 True 取反

2.短路原则

  • 短路与:只要and左边的值为Flase,and右边的值将不会执行,返回结果就是False(偷懒原则),如果左边为True则继续判断后面的条件
  • 短路或:只要or左边的值为True,or右边的值将不会执行,返回结果就是True(偷懒原则),如果左边为Flase则继续判断后面的条件

3.优先级
not > and > or

但是我们不需要记忆优先级,应该通过代码的形式提前规定好优先级。
eg: 先乘除有加减 但是可以使用括号来改变优先级

	(3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)

九、成员运算符

  • 判断个体在不在群体内
# name_list = ['jason', 'kevin', 'oscar', 'jerry']
# print('tony' in name_list)  # False
# print('tony' not in name_list)  # True
# print('j' in name_list)  # False 
列表最小单位是数据值,不能再细分

# s1 = 'hello world'
# print('d' in s1)  #
字符串最小单位是单个单个的字符

d1 = {
      'username': 'jason',
      'pwd': 123
}
print('jason' in d1)  # False 字典成员运算只有键参与
print('username' in d1)  # True      'username' 'pwd'

十、身份运算符

​ Python身份运算符主要用于判断两个变量是否引用自同一个对象。常用的身份运算符is、not is两个。两者均为二元运算符,判断两个操作数是否引用自同一个对象,如果是同一个对象返回True,否则返回False。

  • 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))
    # print(id(l2))
    # print(l1 is l2)  # False
    
    • 小整数池

    ​ 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁内存空间。

    ​ Python对小整数的定义是[-5,257]这些整数对象是提前建立好的,不会被垃圾回收。在一个Python的程序中,所有位于这个范围内的整数使用的都是同一个对象。

    i1 = 11
    i2 = 11
    print(i1 is i2)(内存地址)
    
    s1 = 'jason jason jason'
    s2 = 'jason jason jason'
    print(s1 is s2)# false
    不同的环境下可能优化的程度不一样
    
    • 值相同,内存地址可能不同
    • 内存地址相同,值肯定相同

    作业

    1.获取用户输入并打印成下列格式
    ------------ info of Jason -----------
    Name : Jason
    Age : 18
    Sex : male
    Job : Teacher
    ---------------- end -----------------
    image

    2.准备说出下列变量名v绑定的结果
    v1 = 1 or 3 (1)
    v2 = 1 and 3 (3)
    v3 = 0 and 2 and 1 (0)
    v4 = 0 and 2 or 1 (1)
    v5 = 0 and 2 or 1 or 4 (1)
    v6 = 0 or False and 1 (false)

posted @ 2022-09-26 21:01  知了了了了  阅读(189)  评论(1)    收藏  举报