python的基本 数据类型
# 针对不同的数据使用不同的数据类型来保存
整型 浮点型 字符串 列表 字典 元组 集合 布尔
字符串(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