python进阶之路4基本运算符、格式化输出

内容回顾

  • PEP8规范
代码编写规范及美观
  • python注释语法

    平时养成写注释的习惯
      	1.警号
      	2.三个单引号
      	3.三个双引号
    
  • 常量与变量

    1.变量语法结构
      		变量名 赋值符合 数据值
    2.底层原理
      		1.先看赋值符合右侧
      		2.再看赋值符号左侧
    3.变量名的命名规范
      		1.数字、字母、下划线
      		2.数字不能开头
      		3.变量名尽量做到见名知意
      		4.变量名尽量不要与关键字冲突
     4.变量名命名风格
      			下划线
      			 驼峰体
      					大驼峰
                    小驼峰
    5.常量
    		全大写
    
  • python基本数据类型

    int整型
    float浮点型
    str字符串
    	四种定义方式
    list列表
    	索引取值
    dict字典
    	按键取值
    

基本数据类型之布尔值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.代码实现
	t1 = (11, 22, 'jason')
4.元组与列表的对比
    # 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)     # (11, 22, [111, 666])

    """
    A.直接报错
    B.(11, 22, [111, 666])
    C.不知道 超出了认知
    """
5.元组内如果只有一个数据值
    # 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

1.集合只能用于去重和关系运算
		pass
2.集合内数据只能是不可变类型
		pass
3.大括号括起来 内部存放多个数据值 数据值与数据值之间逗号隔开 数据值不是k:v键值对
4.代码实现
	s1 = {1,2,3,4,5,6}
5.定义空集合与空字典
	{}	默认是字典
	set()	定义空集合加关键字

与用户交互

"""
以前银行取钱只能拿着存折去柜台跟小姐姐交流才可以
	你想干嘛 我想取钱 
	请输入密码 滴滴滴密码
	想取多少钱 我想取一个亿
	...
随后程序代替了小姐姐跟我们交互
	ATM机器
"""
1.获取用户输入
	input
    # 获取用户输入
    username = input('请输入您的用户名>>>:')
    """
    1.先执行input获取用户输入
    2.将输入的数据绑定给变量名username
    3.以后资啊程序中就可以使用变量名反复调用用户数据
    """
	强调:input获取到的数据都会统一处理成字符串类型
2.输出内部信息
	print
    1.括号内既可以放数据值也可以放变量名 并且支持多个逗号隔开即可
    2.print自带换行符
    	换行符:\r\n \n(斜杠与字母组合到一起可能会产生特殊的含义)
    3.print也可以切换结束符
    	print(数据,end='默认是\n')
扩展:python2与python3中两个关键字的区别
python2中
    	input方法需要用户自己提前指定数据类型 写什么类型就是什么类型
 	 	 raw_input方法与python3中input一致 输入的统一处理成字符串	
python2中
	print方法有两种使用方式
		print 数据值
		print(数据值)

格式化输出%s %d

提前定义好一些内容 将来需要使用的时候可以具备修改
	eg:奖状、录取通知书、合同
代码实现
	在现实生活中大部分情况下使用下划线提示别人填写内容
    但是在程序中需要使用占位符:%s %d
info = '%s同志你好'
'''单个占位符'''
# info = '%s同志你好'
# print(info % 'Jason')  # Jason同志你好
# print('%s同志你好' % 'tony')  # tony同志你好
# print(info % ('jason',))
# print('%s同志你好' % ('tony',))
'''多个占位符'''
# des = '姓名:%s 年龄: %s 爱好:%s'
# print(des % ('jason', 18, 'read'))
# print('姓名:%s 年龄:%s 爱好:%s' % ('tony',18,'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
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.比较运算符
	< > <= >= ==(等于号) !=(不等于)

常用赋值符 交叉赋值、 链式赋值、解压赋值

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

逻辑运算符 and or not

'''主要配合条件一起使用'''
and 	与  
		and连接的多个条件必须全部成立 结果才成立
	eg:
		你去相亲提要求:身高必须是160以上、长相必须好看、家里必须有钱、性格必须温柔  身高 and 长相 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连接的多个条件只要有一个成立 结果就成立
 	eg:
     	你去相亲提要求:要么家里有钱 或者家里有势 或者长得完美 或者对你死心塌地     有钱 or 有势 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
    规律用and
 not 	非
	取反
 	类似于说反话
"""
三者混合使用的时候有优先级之分 但是我们不需要记忆优先级 应该通过代码的形式提前规定好优先级
	eg: 先乘除有加减  但是可以使用括号来改变优先级
	(3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)
"""

成员运算符in

判断成员在不在个体内
# 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'

身份运算符 is ==

"""
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

# 小整数池
i1 = 11
i2 = 11
print(i1 is i2)


s1 = 'jason jason jason'
s2 = 'jason jason jason'
print(s1 is s2)
不同的环境下可能优化的程度不一样 

"""
了解
    值相同 内存地址可能不同
    内存地址相同 值肯定相同
"""
posted @ 2022-09-26 18:54  缀月  阅读(123)  评论(0编辑  收藏  举报