str、list、dict、bool、tuple、set、程序与用户交互、格式化输出、基本运算符

发布时间 2023-07-17 15:54:12作者: 毓见

字符串(str)

作用:用来记录人的名字,家庭住址,性别等描述性质的状态
定义字符串:
	方式1:
    	name = 'kevin'  # 用的多
     方式2
    	name = "kevin"  # 用的多
     方式3:
    	name = '''kevin'''(当三引号左边有赋值符号和变量名的时候,它是字符串,否则为注释)
     方式4:
    	name = """kevin"""(当三引号左边有赋值符号和变量名的时候,它是字符串,否则为注释)
ps: 字符串就是用引号引起来的部分
    
    # 使用这么多定义字符串的方式有什么好处没?
    
    res = '洋哥说:'趁年轻学技能养活自己''
    res = '洋哥说:"趁年轻学技能养活自己"'
	print(res)
    
    '''当字符串中使用到多个引号的时候,单引号里面使用双引号,双引号里面使用单引号'''
    
    # 在pycharm 中,变量值的下面如果有不是红色的波浪线,就不是错误,那是不规范
    # 变量值的下面如果是红色的波浪线,那就是错误,不允许发生
    
# 字符串它还可以进行拼接:使用+号
s = 'hello'
s1 = 'world'
s2 = 'abc'
print(s + s1 + s2)  # helloworld

# 字符串重复
print(s * 10)  # hellohellohellohellohellohellohellohellohellohello

列表(list)

stu_names = ['kevin', 'jack', 'tank']
定义:
	使用中括号括起来,里面可以存放多个元素值,元素与元素之间使用逗号隔开,元素可以是任意的数据类型
    stu_names = ['kevin',1, 1.11]
# 小练习
names_list = ['kevin', 'jack', ['a', 'b', [1, 2, 'NB', ['AA', 'bb', 'LYNB']]]]

# 把LYNB取出来:列表取值就是一层一层的取出来
# 1. LYNB在大列表的第几个元素? 第三个
l = names_list[2]
# print(l)  # ['a', 'b', [1, 2, 'NB', ['AA', 'bb', 'LYNB']]]

# 2. 问:LYNB在大列表的第几个元素?
l1 = l[2]
print(l1)  # [1, 2, 'NB', ['AA', 'bb', 'LYNB']]

# 3. 问:LYNB在大列表的第几个元素?
l2 = l1[3]
print(l2)  # ['AA', 'bb', 'LYNB']

# 4. 问:LYNB在大列表的第几个元素?
l3 = l2[2]
print(l3)  # LYNB

# 5. 把以上4步合为一步
l4 = names_list[2][2][3][2]
print(l4)

字典(dict)

# 现在让你使用一个变量保存:身高、姓名、年龄等信息
l = ['kevin', 18, 1.8]  # 使用列表保存问题是含义不明确

# 针对上述问题,我们可以使用字典来解决
d = {'username': 'kevin', 'age': 18, 'height': 1.8}
定义:
	用大括号括起来,内部存放多个元素值,元素与元素之间使用逗号隔开,但是,类型是K:V键值对的形式
    K:key,  V:value
    K: 就是对V的描述性信息,一般情况下都是字符串的形式
    V:才是真正的数据值,类似于变量值,数据类型可以是任意的数据类型
d = {'username': 'kevin', 'age': 18, 'height': 1.8}

# 对字典取值?, 字典不支持索引取值!!!
# print(d[0])

# 字典通过k取值,冒号左边的
print(d['username'])  # kevin
print(d['age'])
print(d['height'])  

# 小练习
info = {
    'username': 'kevin',
    'addr': ['a', 'b', {'aa': 1, 'bb': 2, 'hobby': ['xijio', 'tangtou', 'hejiu', {'c': 1, 'd': 2, 'f': 'LYNB'}]}]
}

# 把字典中的LYNB取出来
# 1. 问LYNB在大字典中的第几个元素?
d1 = info['addr']  # ['a', 'b', {'aa': 1, 'bb': 2, 'hobby': ['xijio', 'tangtou', 'hejiu', {'c': 1, 'd': 2, 'f': 'LYNB'}]}]
print(d1)

# 2. 问LYNB在列表中的第几个元素?
d2 = d1[2] # {'aa': 1, 'bb': 2, 'hobby': ['xijio', 'tangtou', 'hejiu', {'c': 1, 'd': 2, 'f': 'LYNB'}]}
print(d2)

# 3. 问LYNB在字典中的第几个元素?
d3 = d2['hobby']  # ['xijio', 'tangtou', 'hejiu', {'c': 1, 'd': 2, 'f': 'LYNB'}]
print(d3)

# 4. 问LYNB在列表中的第几个元素?
d4 = d3[3]  # {'c': 1, 'd': 2, 'f': 'LYNB'}
print(d4)

# 5. 问LYNB在字典中的第几个元素?
d5 = d4['f']
print(d5)

# 把以上五步总结成一步的
d6 = info['addr'][2]['hobby'][3]['f']
print(d6)

布尔类型(bool)

# 什么是布尔类型呢?就两种情况
True		true	-----> 正确的   好的  可执行的   真
False        false   -----> 错误的    不好的  不行的   假

# 针对布尔类型的变量名,一般是使用is_开头
is_right = True
is_delete = True
is_alive = False

# 针对布尔类型,python的中的所有数据类型都可以转为布尔类型
s = 'hello'

# 在python中什么是真? 什么是假?
	'''什么是假?'''
    # 记忆:
    0, '', None, {}, [], ... 空的内容都是假的
    # 其余都是真的

# 数据类型的关键字

# 扩展
is_delete = True

元组(tuple)

# 元组就是不可变的列表
定义:
	t = (1, 2, 3, 4)
    # 就是小括号括起来,内部存放多个元素值,元素和元素之间使用逗号隔开,内部元素不支持修改
    t = (1, 2, 3, 4, ['a', 'b'])
    # t[0] = 666
    # print(t[0])  # 取值跟列表是一样的
    # print(t[4][0])
    t[4][0] = 'c'
    print(t)

集合(set)

作用: 去重和运算无序
定义:
	s = {1, 2, 3, 4}
    # 用大括号括起来,内部存放多个元素值,元素和元素之间使用逗号隔开
 d = {}
print(type(d))  # <class 'dict'>

l = []
print(type(l))  # <class 'list'>

s = set() # 定义空集合
print(type(s))   

程序与用户交互

# 在python中如何与用户进行交互
input
# 如何拿到用户输入的数据?
'''input接收的数据,不管他是什么类型的,一律都是字符串的形式'''
username = input('请开始你的输入:')  
print(username, type(username))  # kevin


# 输出
print
a = 1
b = 2
c = 3
# print(a, b, c)
print(a, end='')
print(b, end='')
print(c)

# 换行符\n
# \r\n  \r\n  \r\n  \n
# \n

格式化输出

1. 什么是格式化输出?
	# 把一段字符串里面的某些内容替换掉之后再输出,就是格式化输出
2. 为什么要格式化输出?
	res='亲爱的xxx你好!你xxx月的话费是xxx,余额是xxx'
    
    res='亲爱的zhangsan你好!你1月的话费是10000,余额是10000000'
    res='亲爱的lisi你好!你2月的话费是20000,余额是20000000'
    ...
 3. 如何格式化输出?
	%s  %d
    # 占位符:先占个位置
# res = '亲爱的%s你好!你%s月的话费是%s,余额是%s'

'''位置个数必须一一对应,多一个不行,少一个也不行'''
# print(res % ('zhangsan', 1, 999, 1000))  # 亲爱的zhangsan你好!你1月的话费是999,余额是1000
# print(res % ('zhangsan', 1, 999))  # 亲爱的zhangsan你好!你1月的话费是999,余额是1000
# print(res % ('zhangsan', 1, 999, 1000, 999))  # 亲爱的zhangsan你好!你1月的话费是999,余额是1000

# res = '亲爱的%s你好!你%s月的话费是%s,余额是%s' % ('zhangsan', 1, 999, 1000)
# print(res)
# res = '亲爱的%s你好!'
# print(res % 'kevin') # 当只有一个占位符的时候,%后面的小括号可以不写,直接写元素值


# %d:只能跟整型占位
# %s:可以跟任意的数据类型占位

# res = '亲爱的%s你好!你%s月的话费是%s,余额是%d'
# print(res % ('zhangsan', 1, 999, '999'))

print('%08d' % 111)
print('%08d' % 9)
print('%08d' % 99999999999)

基本运算符

1. 算术运算符
 + - * /   % ** // 
2. 比较运算符
	== != > < >= <=
3. 赋值运算符 =
4. 增量赋值
# 增量赋值
n = 666
n = n + 1  # n += 100
n = n - 1  # n -= 1
n = n * 1  # n *= 1
n = n / 1  # n /= 1
print(n)  # 667
5. 链式赋值
x = 10
y = 10
z = 10
print(x, y ,z)

x = y = z = 10
print(x, y, z)
6. 交叉赋值
# 交换m,n的值
# m = n
# n = m
# print(m, n)
# 借助于第三个变量
# temp = m
# m = n
# n = temp
# print(m, n)

m, n = n, m
print(m, n)

7. 解压赋值

# l, l1, l2, l3 = names_list
# l, l1, l2, l3 = ['kevin', 'jack', 'rose', 'tank', ]
# print(l, l1, l2, l3)

# l, *_, l3 = ['kevin', 'jack', 'rose', 'tank', ]
#
# print(l)
# print(l3)
# '''
#     *后面的变量名结束多余的变量值,并且组装成列表的形式返回
# '''
# print(_)  # ['jack', 'rose']

# l, *_, last = ['kevin', 'jack', 'rose', 'tank', ]
# print(last)

8. 逻辑运算符
	and:与,连接两个条件,它的结果两边必须都是真,结果才是真
        	>>>: 2 > 1 and 1 != 1 and True and 3 > 2
            False
            
    or:或,连接的两个条件,只要有一个是真,结果就是真
    		>>>:2 > 1 or 1 != 1 or True or 3 > 2
             True
            
    not:非,取反
    	    >>>:  (3>4 and 4>3) or (1==3 and 'x' == 'x') or 3 >3
    True 
    not True--->False
    # 优先级not>and>or