day02 数据类型(上)¶
数据类型的概要:
类 基于str类实例化出来的对象
字符串 str(upper) :"中国" "日本" "台湾省"
列表 list :[1,2,3] ["王平安","欧阳"]
字典 dict :{"k1":123,"k2":345} {"age":"xx","name":"alex"}
元组 tuple
集合 set
布尔 bool
特殊 None
今日概要¶
- int
- None
- bool
- str
- list
- tuple
- dict
1.整型(int)¶

练习题¶
ip = "192.168.11.23"
# 1.切割成四个数字
data_list = ip.split(".") # ["192","168","11","23"]
# 2.获取列表的第一个值
v1 = data_list[0] # "192"
# 3.整型
v2 = int(v1) # 192
# 4.二进制
v3 = bin(v2) # "0b10010010101"
2.None¶
None转化布尔值也是False。
3.布尔类型(bool)¶
都有哪些东西转成bool是False:
- 0
- ""
- None
- []
- ()
- {}
4.字符串类型(str)¶
4.1 独有功能¶
- startswith、endswith
- upper/lower
- isdecimal,判断输入的字符串是否是整数
print("欢迎使用xx系统")
print("1.登录;2.注册;3.注销...")
choice = input("请选择:")
if choice.isdecimal():
data = int(choice)
print("序号是:", data)
else:
print("序号选择错误")
- strip/lstrip/rstrip
- replace
text = "刘森和王卓是好基友"
text.replace("刘森","**")
text.replace("王卓","xx")
print(text) # **和xx是好基友
print(text) # 刘森和xx是好基友
text = input(">>>") # 王卓今天和欧阳一起玩,玩到深夜去找刘森,被刘森骂了出来。
data_list = ["王卓","刘森","欧阳"]
for item in data_list:
# item="王卓" "刘森","欧阳"
# **今天和欧阳一起玩,玩到深夜去找**,被**骂了出来。
text = text.replace(item,"**")
- split/rsplit
file_path= "C:\xxx\xxx\xx.mp4"
data_list = file_path.rplit(".",maxsplit=1) # ["C:\xxx\xxx\xx","mp4"]
- join
#'aid=246387571&auto_play=0&cid=289008441&did=KREhESMUJh8tFCEVaRVpE2taPQk7WChCJg&epid=0&ftime=1627100937&lv=0&mid=0&part=1&sid=0&stime=1627104372&sub_type=0&type=3'
data_list = ["aid=246387571","auto_play=0","cid=289008441"]
res = "&".join(data_list)
print(res)
param = {
"aid":"246387571",
"auto_play":"0",
"cid":"289008441",
}
# data_list = ["aid=246387571","auto_play=0","cid=289008441"]
data_list = []
# 1.循环字典,并添加到列表中
for k,v in param.items():
# k=aid v=246387571
ele = "{}={}".format(k,v) # "aid=246387571"
data_list.append(ele)
# 2.拼接起来
res = "&".join(data_list)
print(res)
- center / ljust / rjust / zfill
4.2 公共功能¶
- 长度
- 索引,下标
循环输出字符串中的每一个字符。
1.括号
print()
input()
range()
len()
取索引
name = "中国北京昌平"
name[2]
列表数据类型
v1 = [11,22,33,44,55]
2.语法规则
if xx:
pass
else:
pass
for x in xx:
pass
while True:
pass
3.循环
- while循环
count = 0
while True:
print(count)
count += 1
- for循环
range(5)
for i in range(5):
# 0/1/2/3/4
# while循环
name = "中国北京昌平"
count = 0
while True:
print(name[count])
count += 1
if count == len(name):
break
- 切片
# 0 1 23 4 5
# -2 -1
name = "中国北京昌平"
v1 = name[0:2] # 中国
print(v1)
v2 = name[1:5] # 国北京昌
print(v2)
v3 = name[1:-1] # 国北京昌
print(v3)
v4 = name[1:] # 国北京昌平
print(v4)
v5 = name[:-1] # 中国北京昌
print(v5)
v6 = name[:] # 中国北京昌平
print(v6)
- 步长
name = "中国北京昌平"
char_list = []
for i in range(len(name) - 1, -1, -1): # [5,4,3,2,1,0]
char = name[i]
char_list.append(char)
res = "".join(char_list)
print(res)
- 包含
练习题¶
- 提示用户持续录入敏感字符串 ,直到输入(Q/q)终止。每输入一个敏感字符串,就在列表中添加一个。
data_list = []
while True:
data = input("请输入(q/Q):")
if data == "q" or data == "Q":
break
data_list.append(data)
print(data)
data_list = []
while True:
data = input("请输入(q/Q):")
if data.upper() == "Q":
break
data_list.append(data)
print(data)
data_list = []
while True:
data = input("请输入(q/Q):")
data = data.strip()
if not data:
print("输入不能为空")
continue
if data.upper() == "Q":
break
data_list.append(data)
print(data)
data_list = []
while True:
data = input("请输入(q/Q):").strip()
if not data:
print("输入不能为空")
continue
if data.upper() == "Q":
break
data_list.append(data)
print(data)
- 提示用户输入两个值,保证两个值都要是数字(一直输入指导是数字),两个数字相加。
while True:
num1 = input("请输入数字:").strip()
if not num1:
print("输入不能为空")
continue
if num1.isdecimal():
num1 = int(num1)
break
while True:
num2 = input("请输入数字:").strip()
if not num2:
print("输入不能为空")
continue
if num2.isdecimal():
num2 = int(num2)
break
res = num1 + num2
print(res)
while True:
num1 = input("请输入数字:").strip()
num2 = input("请输入数字:").strip()
if num1.isdecimal() and num2.isdecimal():
res = int(num1) + int(num2)
print(res)
break
print("输入错误,请重新输入")
num_list = []
while True:
num = input("请输入数字:").strip()
if not num:
print("输入不能为空")
continue
if num.isdecimal():
num_list.append(int(num))
if len(num_list) == 2:
break
else:
print("格式不合法")
res = num_list[0] + num_list[1]
- 遍历一个目录下所有的文件,找到所有
pngorPNG后缀的文件。
file_name = "xxxxx.png"
# ["xxxxxx","png"]
data_list = file_name.rsplit(".",maxsplit=1)
ext = data_list[-1]
# 遍历目录下的所有文件
import os
file_name_list = os.listdir(r"/Users/wupeiqi/PycharmProjects/day02")
# ['log.txt', '1.初识数据类型.py', '.idea']
for file_name in file_name_list:
print(file_name,type(file_name))
import os
# 1.遍历目录下所有的文件和文件夹并放入列表
file_name_list = os.listdir("/Users/wupeiqi/PycharmProjects/day02")
# 2.循环这个列表,获取每个文件名称
for file_name in file_name_list:
data_list = file_name.rsplit(".", maxsplit=1)
# 获取扩展名
ext = data_list[-1]
# 判断是否是png
if ext.lower() == 'png':
print(file_name)
- 让用户输入一段文本,遍历文本的每个字符,如果是数字则追加到列表;然后将所有的字符串拼接起来;再将拼接起来的字符串转换成整形;再转换成二进制;不要前面0b。
data_list = []
text = input("请输入:")
for i in text:
if i.isdecimal():
data_list.append(i)
print(data_list)
data_list = []
text = input("请输入:")
for i in text:
if i.isdecimal():
data_list.append(i)
data_string = "".join(data_list)
data_int = int(data_string)
data_bin_string = bin(data_int)
print(data_bin_string[2:])
data_list = []
text = input("请输入:")
for i in text:
if i.isdecimal():
data_list.append(i)
res = bin(int("".join(data_list)))[2:]
print(res)
5.列表(list)¶
5.1独有功能¶
- 追加
- 插入
- 删除(值)
# 练习题1
user_list = []
while True:
user = input("请输入用户名:").strip()
pwd = input("请输入密码:").strip()
item = "{},{}".format(user,pwd)
user_list.append(item)
# 练习题2
user_list = []
while True:
name = input("姓名:")
if name.startswith("李"):
user_list.insert(0,name)
else:
user_list.append(name)
# 订票系统
user_list = []
while True:
name = input("姓名:")
if name.upper() == 'Q':
break
user_list.append(name)
# 获取前三个人
u1 = user_list.pop(0)
u2 = user_list.pop(0)
u3 = user_list.pop(0)
print(u1,u2,u3)
# 买不到票的人
user_string = ",".join(user_list)
message = "抱歉,以下人员无票:{}".format(user_string)
print(message)
- 排序
num_list = [11, 22, 33, 9, 10, 90]
print(num_list)
# num_list.sort() # 从小到大
num_list.sort(reverse=True) # 从大到小
print(num_list)
num_list = ["root-1", "alex-2", "李杰-3", "土鳖-4"]
print(num_list)
# num_list.sort() # 从小到大
num_list.sort(reverse=True) # 从大到小
print(num_list)
5.2 公共功能¶
-
长度 len([11,22,33])
-
索引
num_list = ["root-1", "alex-2", "李杰-3", "土鳖-4"]
num_list[0]
num_list[1]
num_list[-1]
num_list[1] = "xxxx"
print(num_list)
del num_list[0]
- 切片
- for循环
- 包含
data_list = ["root-1", "alex-2", "李杰-3", "土鳖-4"]
if "root" in data_list:
print('...')
else:
print("...")
5.3 嵌套¶
data_list.append(999)
data_list[-1].append(999)
data_list[-1][2].append(999)
data_list[-1][1].upper()
案例:循环提示用户注册,输入Q/q终止
user_list = []
v1 = ["root","123"]
user_list.append(v1)
v2 = ["root","123"]
user_list.append(v2)
v3 = ["root","123"]
user_list.append(v3)
print(user_list)
user_list = []
while True:
user = input("请输入用户名:")
if user.upper() == "Q":
break
pwd = input("请输入密码:")
v1 = []
v1.append(pwd)
v1.append(user)
user_list.append(v1)
print(user_list)
user_list = []
while True:
user = input("请输入用户名:")
if user.upper() == "Q":
break
pwd = input("请输入密码:")
v1 = [user,pwd]
user_list.append(v1)
print(user_list)
user_list = []
while True:
user = input("请输入用户名:")
if user.upper() == "Q":
break
pwd = input("请输入密码:")
user_list.append( [user,pwd] )
print(user_list)
继续实现:用户登录。
user_list = []
while True:
user = input("请输入用户名:")
if user.upper() == "Q":
break
pwd = input("请输入密码:")
user_list.append( [user,pwd] )
# 1.提示用户输入用户名和密码
username = input("用户名:")
password = input("用户名:")
# 2.校验
is_success = False
for item in user_list:
if item[0] == username and item[1] == password:
is_success = True
break
if is_success:
print("登录成功")
else:
print("登录失败")
6.元组 (tuple)¶
元素不可以被修改的一个容器。
6.1 独有功能(无)¶
6.2 公共功能¶
- 长度
- 索引
- 切片
- for循环
- 包含
6.3 嵌套¶
6.4 必考题¶
练习题¶
user_list = []
while True:
user = input(">>>")
pwd = input(">>>")
item = (user,pwd, )
user_list.append(item)
生成一副扑克牌。
color_list = ["黑桃","红桃","方片","梅花"]
num_list = range(1,14)
poke_list = []
for color in color_list:
# color = "黑桃"
for num in num_list:
# num = 1 2 3 4 ... 13
item = (color,num)
poke_list.append(item)
print(poke_list)
import random
color_list = ["黑桃", "红桃", "方片", "梅花"]
num_list = range(1, 14)
poke_list = []
for color in color_list:
# color = "黑桃"
for num in num_list:
# num = 1 2 3 4 ... 13
item = (color, num)
poke_list.append(item)
user_poker_list = []
for i in range(3):
index = random.randint(0, len(poke_list) - 1)
tuple_item = poke_list.pop(index)
user_poker_list.append(tuple_item)
result = 0
for item in user_poker_list:
number = item[-1]
result += number
print(result)
现在:有三个人,每个人抽三张牌。
import random
color_list = ["黑桃", "红桃", "方片", "梅花"]
num_list = range(1, 14)
poke_list = []
for color in color_list:
# color = "黑桃"
for num in num_list:
# num = 1 2 3 4 ... 13
item = (color, num)
poke_list.append(item)
"""
[
[('方片', 12), ('黑桃', 1), ('黑桃', 2)],
[('梅花', 1), ('红桃', 7), ('方片', 5)],
[('梅花', 9), ('红桃', 1), ('梅花', 11)]
]
"""
total_user_list = []
for _ in range(3):
user_poker_list = []
for i in range(3):
index = random.randint(0, len(poke_list) - 1)
tuple_item = poke_list.pop(index)
user_poker_list.append(tuple_item)
total_user_list.append(user_poker_list)
print(total_user_list)
score_list = []
for item_list in total_user_list:
score = 0
for item in item_list:
score += item[-1]
score_list.append(score)
print(score_list)
# result = 0
# for item in user_poker_list:
# number = item[-1]
# result += number
#
# print(result)