Python基础4

今日内容概要

  • 基本数据类型之布尔值bool
  • 基本数据类型之元祖tuple
  • 基本数据类型之集合set
  • 与用户交互
  • 格式化输出
  • 基本运算符
  • 常用赋值符
  • 逻辑运算符
  • 成员运算符
  • 身份运算符

今日内容详细

基本数据类型之布尔值bool

  • 用来判断事物的对错 是否可行 主要用于流程控制中

  • 只有两种状态

    True     对的 真的 可行的
    False    错的 假的 不可行的
    
  • python中所有数据都自带布尔值

    布尔值为False的数据有:0 None '' [] {}
    布尔值为True的数据有:除了上面的都是True
    
  • 存储布尔值的变量名一般推荐使用is开头

    is_delete = False
    is_alive = True
    

扩展

​   很多程序中提供的注销账户功能 其实底层并没有删除数据 而是修改了数据的状态

​ 如下表 通过修改is_delete下的数据值来表示是否注销

​ 0的布尔值为False 1的布尔值为True

id username password phone is_delete
1 jason 123 110 1
2 kevin 456 120 0

基本数据类型之元祖tuple

  • 也称为'不可变'的列表

    元祖内索引绑定的内存地址不能修改

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

  • 代码实现

    t1 = (11, 22, '张三')
    
  • 元组与列表的对比

    # 列表
    l1 = [11, 22, 33]
    l1[0] = 666
    print(l1)
    # 输出结果
    [666, 22, 33]
    
    # 元祖
    t1 = (11, 22, 33)
    t1[0] = 999
    print(t1)
    #输出结果   报错
    TypeError: 'tuple' object does not support item assignment
    
  • 元祖内如果只有一个数据值

    # 错误写法
    t1 = (1)
    t2 = (11.11)
    t3 = ('张三')
    print(type(t1), type(t2), type(t3))
    # 输出结果
    <class 'int'> <class 'float'> <class 'str'>
    
    # 正确写法
    t1 = (1,)
    t2 = (11.11,)
    t3 = ('张三',)
    print(type(t1), type(t2), type(t3))
    # 输出结果
    <class 'tuple'> <class 'tuple'> <class 'tuple'>
    
    
    """
      建议:以后在使用可以存放多个数据值的数据类型时 如果里面暂时只有一个数据值 那么也建议你加上逗号
    """
    

基本数据类型之集合set

  • 集合只能用于去重和关系运算

    可以运用集合去重,运用集合可以进行关系测试,例如,求差集、并集

  • 集合内数据只能是不可变类型

    集合类型要求元素是独一无二的,不能存在相同的元素,但是如果其中的某一个元素是可以被改变的,它一旦改变之后可能会和其他的元素相同,这样子的话集合类型就会出现错误,所以集合类型要求,该元素不能是可变数据类型

  • 大括号括起来 内部存放多个数据值 数据值与数据值之间逗号隔开 数据值不是key:value键值对

  • 定义集合

    s1 = {1, 2, 3, 4, 5, 6}
    
  • 定义空集合与空字典

    # 定义空字典
    	{}       默认是字典
    	set()     定义空集合
    

与用户交互

  • 获取用户输入

    # 获取用户输入
    username = input('请输入您的用户名>>>:')
    """
     1.先执行input获取用户输入
     2.将输入的数据绑定给变量名username
     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(数据值)
    """
    

格式化输出

  指提前定义好的一些内容 将来需要使用的时候可以局部修改 通过占位符%d%s实现 如:奖状·录取通知书·合同等

使用占位符%s %d

'''单个占位符'''
 print('%s同志你好' % '张三') 
 print('%s同志你好' % ('张三',))

# 输出结果
张三同志你好

'''多个占位符'''
 desc = '姓名:%s 年龄:%s 爱好:%s'
 print(desc % ('张三', 18, '学习'))
 print('姓名:%s 年龄:%s 爱好:%s' % ('菜虚坤', 28, '唱跳rap'))
    
 # 输出结果
姓名:张三 年龄:18 爱好:学习
姓名:菜虚坤 年龄:28 爱好:唱跳rap

'''注意事项:有几个占位符就需要几个数据值'''
 print('my name is %s my age is %s' % ('张三',))  
 print('my name is %s my age is %s' % ('张三', 18, '学习'))  

# 输出结果
TypeError: not enough arguments for format string   # 报错 少了不行
TypeError: not all arguments converted during string formatting  # 报错 多了不行

'''不同占位符的区别'''
%s常见数据类型都支持
%d只支持数字类型

 demo1 = '%s您好 您本月的话费是%s 余额是%s'  
 print(demo1 % ('张三', 100, 10000000000000))
 demo2 = '%d您好 您本月的话费是%d 余额是%d'  
 print(demo2 % ('李四', 1000000000, -100000))

# 输出结果
张三您好 您本月的话费是100 余额是10000000000000
TypeError: %d format: a number is required, not str

print('%08d'% 123)  
# 输出结果
0000123  # 占8位 空余用0补齐
print('%08d'% 1234324324)  # 1234324324
# 输出结果
1234324324  # 占8位 如果数据超过8位则不生效

基本运算符

  • 数学运算符
    image

    + - * / % // **
        简化写法
        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  次幂
    
  • 比较运算符
    image

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

常用赋值符

  • 链式赋值

    name = '张三'
    name1 = name
    name2 = name
    '''链式赋值'''
    name = name1 = name2 = 'jason'
    
  • 交叉赋值

      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
    
  • 解压赋值

    name_list = ['张三', '李四', '王五', '赵六']
    '''low的写法'''
         name1 = name_list[0]
         name2 = name_list[1]
         name3 = name_list[2]
         name4 = name_list[3]
    '''解压赋值语法'''
         name1, name2, name3, name4 = name_list
    '''解压赋值在使用的时候 正常情况下需要保证左边的变量名与右边的数据值个数一致'''
         a, b = name_list  # 变量名少了不行
         a, b, c, d, e = name_list  # 变量名多了也不行
    '''当需要解压的数据个数特别多 并且我们只需要使用其中的几个 那么可以打破上述的规则'''
         a, *b = name_list  # *会自动接收多余的数据 组织成列表赋值给后面的变量名
         print(a)  # 张三
         print(b)  # ['李四', '王五', '赵六']
         a, c, *b = name_list
         print(a)  # 张三
         print(c)  # 李四
         print(b)  # ['王五', '赵六']
         a, *b, c = name_list
         print(a)  # 张三
         print(b)  # ['李四', '王五']
         print(c)  # 赵六
        '''当数据值不准备使用的时候 可以使用下划线作为变量名绑定'''
        a, *_, c = name_list
    

逻辑运算符

  • and 与

    and链接的多个条件必须全部成立 结果才成立
        1 > 2 and 4 < 8 and 10 < 1 and 1 == 2  如果条件中全部由and组成那么判断起来非常的简单 只要发现一个不成立 结果就不成立      
        print(1 < 10 and 666)  # 666  成立
        print(1 < 10 and 2 < 8)  # True  成立
        print(111 and 222)  # 222  成立
        如果需要你准确的说出具体的结果值  那么需要按照下列方式
        如果and左边的条件是成立的 那么就完全取决于右边的条件
        右边如果直接是数据值 那么结果就是该数据值 如果是含有表达式 则为布尔值
    
  • or 或

    or连接的多个条件只要有一个成立 结果就成立
        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
    
  • not 非

    取反 类似于说反话
        print(not 1<10)  # False
    
"""
三者混合使用的时候有优先级之分 但是我们不需要记忆优先级 应该通过代码的形式提前规定好优先级
	eg: 先乘除有加减  但是可以使用括号来改变优先级
	(3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)
"""

成员运算符

in 判断个体在不在群体内

name_list = ['张三', '李四', '王五']
print('赵六' in name_list)   # False
print('张三' in name_list)   # True

'''列表的最小单位是数据值 不能再细分'''
print('张' in name_list)    # False

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


d1 = {'username': '张三','pwd': 123}

print('张三' in d1)     # False  字典成员运算之有键参与
print('username' in d1)  # True

身份运算符

is    判断内存地址是否相同
==    判断数据值是否相同

'''id()  返回一段数字 该数字可以看成是内存地址'''

l1 = [11, 22, 33, 44, 55, 66, 77, 88]
l2 = [11, 22, 33, 44, 55, 66, 77, 88]
print(l1 == l2)   # True
print(l1 is l2)   # False


"""
值相同 内存地址可能不同
内存地址相同 值肯定相同
"""

作业

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


    Name = input('请输入您的姓名>>>:')
    Age = input('请输入您的年龄>>>:')
    Sex = input('请输入您的性别>>>:')
    Job = input('请输入您的职业>>>:')
    print('------------ info of Jason -----------')
    print('Name:', Name)
    print('Age:', Age)
    print('Sex:', Sex)
    print('Job:', Job)
    print('---------------- end -----------------')
    
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 17:23  LZJJJ  阅读(62)  评论(0)    收藏  举报