python基本数据类型补充,与用户交互,格式化输出,多种赋值方式,各种运算符以及流程控制理论

python基本数据类型补充,与用户交互,格式化输出,多种赋值方式,各种运算符以及流程控制理论

今日内容概要

  • 昨日作业详解
  • python基本数据类型补充
  • 如何与用户交互
  • 格式化输出
  • 基本运算符
  • 多种赋值方式
  • 逻辑运算符
  • 成员运算符
  • 身份运算符
  • 流程控制理论

今日内容详细

作业详解

# 附加练习题
# 1.想办法打印出jason
l1 = [11, 
      22, 
      'kevin', 
      ['tony', 
       'jerry', 
       [123, 
        456, 
        'jason']
       ]
      ]
'''分步操作'''
# 1.先看大列表到底有几个数据值 以及我们想要的数据值在哪个里面
# print(l1[3])
l2 = l1[3]  # ['tony', 'jerry', [123, 456, 'jason']]
# 2.再次思考小列表有几个数据值 以及我们想要的数据值在哪个里面
# print(l2[2])
l3 = l2[2]  # [123, 456, 'jason']
# 3.最后转化成了简单的索引直接取值
print(l3[2])
'''简化操作'''
print(l1[3][2][2])

# 2.想办法打印出大宝贝
# 2.想办法打印出大宝贝
d1 = {'name': 'jason', 
      'others': {'a1': 'heiheihei', 
                 'a2': {'k1': 'hahaha', 
                        'k2': 'hehehe', 
                        'k3': '大宝贝'}
                 }
      }
'''分步操作'''
# 1.先拿大字典第二个键值对的值
# print(d1['others'])
d2 = d1['others']  # {'a1': 'heiheihei', 'a2': {'k1': 'hahaha', 'k2': 'hehehe', 'k3': '大宝贝'}}
# 2.再拿小字典第二个键值对的值
# print(d2['a2'])
d3 = d2['a2']
# 3.转化成简单的按k直接取值
print(d3['k3'])
'''简化操作'''
print(d1['others']['a2']['k3'])

# 3.想办法打印出run
data = {'username': 'jason', 
        'hobby': [11,
                  22, 
                  {'height': 183, 
                   'hobby': ['read', 
                             'run', 
                             'music'
                             ]
                   }
                  ]
        }
'''分步操作'''
# print(data['hobby'])
data1 = data['hobby']  # [11, 22, {'height': 183, 'hobby': ['read', 'run', 'music']}]
# print(data1[2])
data2 = data1[2]  # {'height': 183, 'hobby': ['read', 'run', 'music']}
# print(data2['hobby'])
data3 = data2['hobby']
print(data3[1])
'''简化操作'''
print(data['hobby'][2]['hobby'][1])

基本数据类型之布尔值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			XXX		1
2	kevin		321			110		0
"""

基本数据类型之元组tuple

1.也称为'不可变'的列表
		元组内索引绑定的内存地址不能修改
2.小括号括起来 内部存放多个数据值 数据值与数据值之间逗号隔开 数据值可以是任何数据类型
3.代码实现
		t1 = (11 , 22 , 'jason')
4.元组与列表的对比
		# l1 = [11 , 22 , 'jason']
    # print(l1[0]) # 获取l1中索引0对应的数据值
    # l1[0] = 666
    # print(l1) # [666,22,33]
    
    # t1 = (11 , 22 , 33)
    # print(t1[0]) # 11
    # t1[0] = 999
    # print(t1) # (999,22,33)
    
    t1 = (11 , 22 , [111,222])
    t1[2][1] = 666
    print(t1)
    """
    A.直接报错
    B.(11,22,[111,666])
    C.不知道 超出了我的认知
    选B,元组内可变类型数据可修改,但不可添加或删除
    """
    5.元组内如果只有一个数据值
    		t1 = (11)
        	t2 = (11.22)
            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.集合只能用于去重和关系运算
2.集合内数据只能是不可变类型
3.大括号括起来 内部存放多个数据值 数据值与数据值之间逗号隔开 数据值不是k:v键值对
4.代码实现
		s1 = {1, 2, 3, 4, 5}
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(数据值)

格式化输出

提前定义好一些内容 将来需要可以局部修改
	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 % ('tory',100000,-1000))

print('%08d'% 123) # 00000123
print('%08d'% 123456789) # 123456789

基本运算符

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.链式赋值
	# name = 'jason'
    # name1 = name
    # name2 = name
    # 链式赋值
    name = name1 = name2 = 'jason'
2.交叉赋值
	m = 100
    n = 999
    '''让m和n互相转换绑定的值'''
    """奇葩式写法"""
    # m = n
    # n = m
    # print(m, n)  # 999 999
    '''方式一:采用中间变量'''
    # temp = m
    # m = n
    # n = temp
    # print(m, n)  # 999 100
    '''方式二:交叉赋值法'''
    m,n = n,m
    print(m,n) # 999,100
3.解压赋值
	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
    '''接她赋值在使用的时候 正常情况下需要保证左边的变量名与右边的数据值个数一致'''
    # 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) # jason
    # print(c) # kevin
    # print(b)  # ['tony', 'oscar']
    # a, *b, c = name_list
    # print(a)  # jason
    # print(b)  # ['kevin', 'tony']
    # print(c)  # oscar
    '''当数据值不准备使用的时候 可以使用下划线作为变量名绑定'''
    a,*_,c = name_list

逻辑运算符

'''主要配合条件一起使用'''
andand连接的多个条件必须全部成立 结果才成立
	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左边的条件是成立的 那么就完全取决于右边的条件
    右边如果直接是数据值 那么结果就是该数据值 如果是含有表达式 则为布尔值
                   
oror连接的多个条件只要有一个成立 结果就成立
 	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)
"""

成员运算符

判断个体在不在群体内

# 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 word'
# print('d' in s1) # 字符串最小单位是单个单个的字符

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

身份运算符

"""
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)) # 12345
# print(id(l2)) # 54321
# 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) # 有的是False  有的是True
不同环境下可能优化的程度不一样

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


作业

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

username = input('请输入姓名:')
userage = input('请输入年龄:')
usersex = input('请输入性别:')
userjob = input('请输入职业:')

print('info of {}'.format(username).center(40,'-'))
print('Name:{}'.format(username))
print('Age:{}'.format(userage))
print('Sex:{}'.format(usersex))
print('Job:{}'.format(userjob))
print('end'.center(40,'-'))

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

posted @   lsumin  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示