用户交互与格式化输出运算符

Python

本篇文章接着上一个文章继续介绍Python

  • Python基本的数据类型

  • 与用户交互

  • 格式化输出

  • 基本运算符

  • 多种赋值方式

  • 逻辑运算符

  • 成员运算符

  • 身份运算符

1. Python基本数据类型

  • 布尔值 (bool)
    • 定义:用来判断事务的对错,是否可行,应用与流程控制中
    • 布尔值只有两种状态
      • True 真的,可行的,对的
      • False 假的,不可行的,错的
    • Python中所有的数据都是自带布尔值的,自带布尔值的数据有下列两种
      • 布尔值默认为False的数据有:0 None '' [] {}
      • 布尔值默认为True的数据有:一般除了上面的都是True
    • 布尔值的变量名一般推荐使用is开头
    # 代码实例
    is_boo1f = False
    is_boolt = True
    
    
    
    

小知识:
在企业中一般说的数据库数据伪删除使用的就是类似这种判断逻辑。

# 代码实例
# 一般企业提供的账号注销功能就是使用布尔值判断逻辑
# 比如下列表格中 is_delete 字段0代表着账户存在,字段1代表账户被删除,其实只是修改李程序取值的逻辑,并未删除实际数据
id		username	password    phone    is_delete
 1      jason		 123		      110     	 1
 2		  kevin		 321		      120		     0
# 一般这种方式大多应用于数据库中
    • 元组(tuple)
    • 定义: 小括号括起来 内部存放多个数据值 数据值与数据值之间逗号隔 开 数据值可以是任何数据类型
    • 被称为不可变列表,是因为元组内存放的地址不能修改
    # 代码实例
    
    # 列表与元组的对比
    # 列表使用[]进行定义
    l1 = [11, 22, 33]  # 定义一个列表并赋值给l1
    l1[0] = 123  # 使用重复赋值将123替换到l1列表的0号索引
    print(l1[0])  # 这里发现最终打印的123,而不是11,所以列表值是可变的
    123
    
    

​ 列表修改数据图表参考如下

  • 元组使用()定义
    # 代码实例
    t1 = (11, 22, 33)  # 定义一个元组赋值给t1
    t1[0] = 123  # 将123赋值到元组中的0号索引上
    print(t1[0])  # 打印
    TypeError: 'tuple' object does not support item assignment  # 输出结果显示 ’tuple‘对象不支持分配
    # 由此可以发现tuple的类型是无法使用从新赋值的方式进行修改的
    
    # 注意,元组只是绑定元组里的索引和直接数据,如果对应的数据是列表,还是可以对列表的数据进行修改
    t1 = (11, 22, [111, 222])
    t1[2][1] = 666
    print(t1)
    (11, 22, [111, 666])
    # 原理图如下
    
    
    

  • 集合set

    • 集合只能用于去重和关系运算
    • 集合内的数据只能是不可变类型
    • 集合的代码定义:大括号括起来,内部存放多个数据值并使用逗号分隔,注意,这里的数据值不是k:v键值对
    # 代码实例
    # 这里需要注意,使用{}定义集合,如果数据为空默认为字典,如果需要定义空集合使用 set()定义
    s1 = set()  # 空集合
    sl = {1, 2, 3, 4}
    
    
    
    
    

2. 与用户交互

  • 定义: 原本存在人类社会中的交互场景在计算机中用代码的方式实现
    • 关键字
      input 获取用户输入,用户输入的所有数据将会被统一处理为字符串
      # 代码实例
      username = input('请输入您的名字>>:')
      # 这里先执行input来记录用户输入的信息,然后将用户输入的数据赋值给username变量名,在后续程序中就可以调用变量名来获取用户信息
      
      print 输出内部信息,print的括号内可以存放数据值和变量名,并且支持多个,使用逗号隔开即可
      print 自带换行符
      换行符:\r\n \n
      print 切换换行符
      ```python
      print(data, end='\n')  # 默认是\n可以更改为其他
      
      
      

注意:
python2和python3 input和print的区别
- python2中input
input方法需要用户自己提前指定数据类型
raw_input方法和python中的input一致,会将所有输入统一转换为字符串
- python2中print
可以直接使用python data 或 python(data)的方式来打印数据

3. 格式化输出

  • 定义: 提前将需要的内容定义好,后续程序方便调用
    现实中的合同就比较类似于格式化输出,我们只需要签字就可以了

    • python中的常见占位符 %s和%d
      • %s 支持字符串,常见的数据类型都是支持的
      • %d 只支持数字,只能支持数字
      # 代码实例
      # 单个换行符的使用
      info = '%s同学你好'
      print(info % 'wesley1')
      print('%s老铁你好' % 'wesley')
      print(info % ('wesley', ))
      print('%s老铁来了' % ('wesley', ))
      
      # 多个占位符的使用
      # 多个站位符的使用,这里需要注意占位符和数据应该对应
      str_1 = '姓名:%s 年龄:%s 爱好:%s'
      print(str_1 % ('wesley', 18, '写代码'))
      print('姓名:%s 年龄:%s 爱好:%s' % ('wesley', 18, '写代码'))
      # %d 占位符的使用
       info = '同学你好,你的年纪是%d岁吗?'
       print(info % (18))
       print('同学你好,你的年纪是%d吗?' % (18, ))
       # 设定数据的长度
       int_1 = 123
       print('%08d' % int_1)
       print('%08d' % 123)
      
      

4. 基本运算符

  • 数学运算符 ( + - * / % // **)
变量(n = 10) 赋值符号 等价
n += n = n + 1
n -= n = n - 1
n *= n = n * 1
n /= n = n / 1
n //= n = n // 1
n %= n = n % 1
n **= n = n ** 1
  • 比较运算符
< 小于
> 大于
<= 小于等于
>= 大于等于
== 等号
!= 不等于

5. 多种赋值方式

  • 链式赋值

    # 正常的变量赋值
    name = 'wesley'
    name1 = name
    name2 = name1
    print(name2)
    # 链式赋值
    name3 = name4 = name5 = 'Jinke'
    print(name5)
    
    
  • 交叉赋值

    n = 100
    m = 999
    # 方式一,使用之间变量
    a = n
    n = m
    m = a
    print(n, m)
    n, m = m, n
    print(n, m)
    
    
  • 解压赋值
    解压赋值在使用的时候,正常情况下需要保证左边的变量名和右边的数据值保持数量一致
    使用语法 name1, name2, name3, name4 = name_list

    # 代码实例
    name_list = ['jason', 'kevin', 'tony', 'wesley']
    name1, *b, name4 = name_list
    print(*b, name1, name4)
    # 当数据量太大的时候之间的数据可以使用*_代替
    name1, *_, name4 = name_list
    print(name1, name4)
    
    
    

6. 逻辑运算符

  • 逻辑运算符

    运算符 解释
    and 使用and链接的条件必须全部成立
    or 使用or链接的条件只需要成立一个
    Not 使用not,真就是假,假就是真,取反

    and的使用

    使用and链接的条件全部需要成立

    如果and左边的条件是成立的 那么就完全取决于右边的条件
    右边如果直接是数据值 那么结果就是该数据值 如果是含有表达式 则为布尔值

    print(1 < 10 and 5 < 6)  # 条件成立结果是True
    print(1 < 10 and 5 > 6)  # 条件不成立结果为False
    print(1 < 10 and 666 )  # 条件成立结果为666,非比较运算符的结果会以数据本身的结果打印
    

    or的使用

    print(1 < 10 or 666)  # 左边条件成立结果为True
    print(666 or 1 > 10)  # 左边条件成立结果为666
    print(0 or False)  # 0的默认值为False,两边结果到位False,结果不成立
    print(0 or 111)  # 左边不成立,右边成立,结果为111
    

    not的使用

    取反,非
    print(not 666)  # 条件成立,取反结果为False
    print(not False)  # 条件不成立,取反结果为False
    

    三者混合使用的时候有优先级之分 但是我们不需要记忆优先级 应该通过代码的形式提前规定好优先级

    先乘除有加减 但是可以使用括号来改变优先级
    (3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)

7. 成员运算符

  • 定义:成员运算符是用于判断个体是否在群体内
    # 代码实例
    # 定义一个列表
    name_list = ['li', 'wang', 'liu', 'zhang']
    print('li' in name_list)  # 判断li是不是在这个列表中,在,结果为True
    print('jiu' in name_list) # 判断jiu是不是在这个列表中,不在,结果为False
    print('l' in name_list)  # 判断l在不在这个列表中,不在,结果为False,这里不在的原因是最小单位不是一个字符,是列表中一个最小单元(数据值),同理在字典中使用,只能对k进行判断
    
    
    

8. 身份运算符

  • 定义: 身份运算符的主要作用是判断内存地址是否下相同
    值相同 内存地址可能不同,内存地址相同 值肯定相同
    • is 判断内存地址是否相同
    • == 判断数据值是否相同
    # 代码实例
    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)  # 使用is判断内存地址是否相同,不同结果为False
    print(id(l1))  # 使用id()查看l1的内存地址4381014848
    print(id(l2))  # 使用id()查看l2的内存地址4381017280
    
posted @ 2025-03-13 11:20  樵夫-  阅读(21)  评论(0)    收藏  举报