基本数据类型

  • 非常的重要

序列和索引

1、基础

  • 就是根据这个索引可以取出一个元素
a1= "abcd"

# 正向的索引为 0 1 2 3

# 反向的索引为 -4 -3 -2 -1  

2、切片操作

  • [start: end:步长]

  • 默认不包含结束的索引

  • 当步长为负数的时候,就是从右到左了

  • 为正数的时候就是从左到右了

ll = "abcde"
print(ll[::1])
print(ll[1:4:])
print(ll[0:4])
print(ll[::-1])  # 逆序输出即可,因为步长是负数
print(ll[-1:-9:-1])


3、其他操作

img

  • len(类型),求出这个长度

  • max(类型),求出最大值

  • min(类型),求出最小值

  • s.index(元素),求出这个元素第一次出现的索引的位置,不存在的话,就会报错,返回一个索引

print("*"*30)

一、列表

1、列表的定义和特性

  • 可变序列,就是修改这个列表的话,这内容会改变,但是这个内存的地址还是一样的,内存的地址不会被改变

  • index,count都可以适用

# 直接定义

lista=["a","asd",12]

# 内置函数list创建
listb=list(序列)


la=["123",123,"abv"]
print(la)
print(la.count("abv"))
print(la.index(123))

# 输出结果为

['123', 123, 'abv']
1
1

2、列表的操作

img

1、del删除操作

list1=[12,123,777]

# 这样就删除了这个列表,因此的话,输出这个列表就会报错
del list1
print(list1)




2、遍历列表

  • for循环遍历
lista = ["abc","def","qwe","123",555]
for i in lista:
    print(i)

  • 使用range来遍历循环
lista = ["abc","def","qwe","123",555]
for i in range(0,len(lista)):  # 列表长度
    print(lista[i])

3、列表的增加(append)和extend

  • 在列表的最后一个元素后插入地址
lista = ["abc","def","qwe","123",555]
lista.append(["asd",123])  # 将一个整体添加到列表中去
lista.append("mmm")
print(lista)


# 输出结果为
['abc', 'def', 'qwe', '123', 555, ['asd', 123], 'mmm']
  • extend,将添加的数据类型分解后再添加
lista = ["abc","def","qwe","123",555]

lista.extend("kjh")
print(lista)
# 输出结果为
['abc', 'def', 'qwe', '123', 555, 'k', 'j', 'h']

lista.extend(["aaa","bbb"])  # 将这个列表分解为字符串,依次添加
print(lista)

# 输出结果为
['abc', 'def', 'qwe', '123', 555, 'aaa', 'bbb']

lista.extend({"k":"123"})  # 添加字典的话,添加的就是k
print(lista)

# 输出结果为
['abc', 'def', 'qwe', '123', 555, 'k']

4、列表的插入(insert)

  • insert(索引,插入的内容)

  • 在索引的前面插入内容

lista.insert(1,"123")
print(lista)

# 输出结果为
['abc', '123', 'def', 'qwe', '123', 555]

5、列表的删除

1、remove

  • remove(元素)
lista.remove("abc")
print(lista)

# 输出结果为

['def', 'qwe', '123', 555]

2、pop

  • pop(索引),有一个返回值为要删除的元素
count=lista.pop(1)
print(count)
print(lista)

# 输出结果为
def
['abc', 'qwe', '123', 555]

6、clear

  • 清空所有的元素

  • list1.clear()


lista.clear()
print(lista)

# 输出结果为
[]

7、列表反向输出

  • reverse()
lista.reverse()
print(lista)

# 输出结果为
[555, '123', 'qwe', 'def', 'abc']

8、列表的复制

  • copy
listb=lista.copy()  # 会创建一个新的列表出来
print(listb)

# 输出结果为
['abc', 'def', 'qwe', '123', 555]

3、列表的修改

  • 通过这个索引来进行修改的
lista[1]="kkk"
print(lista)

# 输出结果为
['abc', 'kkk', 'qwe', '123', 555]

4、列表的排序

sort

  • 默认是升序的操作

  • sort(reverse=true) 这个为降序

listb=["asd","nnn","KKK","QWQW"]

listb.sort()
print(listb)

# 输出结果为
['KKK', 'QWQW', 'asd', 'nnn']

listb.sort(reverse=True)  # 设置为降序
print(listb)

# 输出结果为
['nnn', 'asd', 'QWQW', 'KKK']
  • sort(key=str.lower) 全部转换为小写来进行排序
listb.sort(key=str.lower) # 默认全部转换为小写,从而进行排序
print(listb)

# 输出结果为
['asd', 'KKK', 'nnn', 'QWQW']

sorted

  • 内置函数排序

  • 返回一个新的列表

  • sorted(列表,reverse=)

  • 默认也是升序排序

listc=sorted(listb,reverse=True)
print(listc)

# 输出结果为
['nnn', 'asd', 'QWQW', 'KKK']

5、二维列表

  • 上面都是一维列表

  • 还有一个二维列表,就是一个表格数据,一个列表中嵌套了多个列表

# 这个就是一个二维列表

listc=[["asd",123],["mm",43],["ll",55]]
for i in listc:  # i 就是列表
    for j in i:  # 对里面的列表再次进行遍历
        print(j,end=" ")
    print()

# 输出结果为
asd 123 
mm 43 
ll 55 

二、元组

img

1、元组的定义和创建

  • 不可变类型的数据,就不支持删除,增加,修改等操作

  • 可以存储多个类型的数据,里面是有序的数据,因此的话可以使用索引

  • del可以删除这个元组

t=("hello",[10,20,30],123)

# 输出结果为


# 如果只有一个元素的话
t=(10,)  # 必须要带上这个逗号才行,否则不是元组


t1=(10,)
print(type(t1))  # 类型为元组

t2=(10)
print(type(t2))  # 类型为int
  • 判断元素是否存在,in, not in

  • index,count都能使用

t3=(123,"aaa","bbb")
if "123" not in t3:
    print("不存在")

2、元组的访问

1、元组也支持切片操作


t3=(123,"aaa","bbb")
print(t3[0:2])

2、遍历元组

  • for循环遍历
t1 = ("abc","bbb","kkk","ppp")
for i in t1:
    print(i)

# 输出结果为
abc
bbb
kkk
ppp
  • 根据这个索引来进行遍历,range
for i in range(0,len(t1)):
    print(t1[i])

三、字典

1、字典的定义和创建

  • 可变的数据类型,支持增删改查操作,里面是无序的的对象集合

  • key和value对应,这个key是唯一的,值可以有重复的

  • key必须是不可变序列才行,可变的序列不能充当这个key

  • 元组可以充当这个键,列表不能充当这个键

# 创建字典
d={"姓名":"qqq","年龄":123}

d=dict(key1=v1,key2=v2)

2、获取字典

  • d[key],来获取这个值

  • d.get(key,默认值) 如果不存在的话,就会输出这个默认值

# get使用
d1={"姓名":11,"年龄":155,"mm":999}
print(d1.get("mm"))

print(d1["姓名"])  # 可以直接获取到这个key对应的value值

3、遍历字典

  • for遍历

  • d.items方法,这个就是会遍历成一个元组的形式

  • for key,value in d.items

  • keys(),values() 遍历后,虽然不能使用索引(字典本来就不能使用索引),因此的话,可以使用for再次遍历,以后或者有什么满足条件的话

# 直接进行遍历的话,遍历的都是key值
for i in d1:
    print(i)

# 输出结果为
姓名
年龄
mm

# d.keys() # 获取到是字典的中每一个键

for i in d1.keys():
    print(i)

# 输出结果为
姓名
年龄
mm

# d.values() 获取到时每一个值

for i in d1.values():
    print(i)

# 输出结果为
11
155
999


# d.items()

for i in d1.items():
    print(i,type(i))

# 输出结果为
('姓名', 11) <class 'tuple'>
('年龄', 155) <class 'tuple'>
('mm', 999) <class 'tuple'>

# key和value值都取出来

for key, value in d1.items():  # 使用2个变量来代替即可
    print(key, value)

# 输出结果为
姓名 11
年龄 155
mm 999

4、字典的操作

img

1、添加元素

  • d[新key]=值

  • 如果这个key存在的话,则是修改,否则就是添加

d1["lll"]="ppp"
print(d1)

# 输出结果为
{'姓名': 11, '年龄': 155, 'mm': 999, 'lll': 'ppp'}
  • d.upadte(key=值)

  • d.update({key:值})

d1.update(mm="1231")
print(d1)


2、删除元素

  • d.pop(key), 有一个返回值,会直接进行删除这个元素
d1.pop("mm") # 返回对应的值
print(d1)

# 输出结果为
{'姓名': 11, '年龄': 155}

3、随机删除元素

  • d.popitem() 会随机删除这个元素
nn=d1.popitem()  # 删除的值,为以元组的方式返回
print(d1)
print(nn)

# 输出结果为
{'姓名': 11, '年龄': 155}
('mm', 999)  

4、del删除

  • del d[key]
del d1["mm"]
print(d1)

5、清空字典

  • d.clear()
d1.clear()
print(d1)

# 输出结果为
{}

四、集合(set)

img

1、集合的定义和创建

  • 可变的数据类型

  • 只能存储不可变的数据类,字符串,整数,浮点数,元组

  • 里面的元素都是不重复的元素

  • 无序的数据,每次运行的时候,顺序都是不一样的

  • 因为无序的,所以的话不能使用索引

s={}  # 创建的是字典

# 创建空集合

s=set() # 这个才能创建空集合

s1={12,0,"a"} # 里面存储的不可变数据类型



2、集合的内置

1、交集(&)

  • 取出2个集合中公有的元素
set1 = {1, 2, 3}
set2 = {3, 4, 5}

jiao=set1 & set2
print(jiao)

# 输出结果为
{3}

2、并集(|)

  • 将2个集合合并到一起,去掉了重复的元素
bing = set1 | set2
print(bing)

# 输出结果为
{1, 2, 3, 4, 5}  # 会自动的去掉重复的元素

3、差集()

  • 看谁在前面,就是谁的差集
cha = set1 - set2  # 求的是set2没有的元素
print(cha)
 
# 输出结果为
{1, 2}

3、集合的操作

img

1、add操作

s1={10,20,"asd"}
s1.add("kkk")
print(s1)

# 输出结果为
{'kkk', 10, 20, 'asd'}

2、删除元素remove()

s1.remove(10)
print(s1)

3、清空集合clear

s1.clear()

4、集合的遍历

  • for循环遍历
for i in s1:
    print(i)
  • range遍历,不能使用这个遍历,因为这个不能使用索引,里面的数据是无序的,去重的

五、字符串

  • 不可变的数据类型

  • 里面的数据是有序的,可以使用索引

1、字符串的方法

1、字符串大小写

  • s1.lower() 全部转换为小写

  • s1.upper() 全部转换为大写

s1="helloworld"
print(s1.upper())


2、字符串的分割

  • 按照字符进行分割,最后会得到一个列表

  • s1.split("@")

s2="123@qq.com"
# 会得到一个新的列表,原字符串的内容是没有变化的

print(s2.split("@"))

# 输出内容
['123', 'qq.com']

3、count和find和index

  • s.find("字符"),找到了就输出索引,没有找到的话,输出-1
s2="123@qq.com"
print(s2.count("1"))
print(s2.find("1"))

# 输出结果为
1
0

4、endswith和startswitch

  • endswitch以什么结尾的吗

  • startswitch 以什么开头的吗

s1="qqqwwww"
print(s1.endswith("www"))
print(s1.startswith("q"))

# 输出结果为
True
True

5、replace替换

s1="HelloWorld"
new_s = s1.replace("o","你好",1)  # 后面 1 代表着替换1次即可,默认是全部替换
print(new_s)

6、center

  • 字符串居中,不足的左右补空格
s1="HelloWorld"
print(s1.center(20))  # 居中20,这个字符串的长度为10,所以话左右补齐5个即可
print(s1.center(20,"*"))  # 补齐的用*来实现

# 输出结果为
     HelloWorld     
*****HelloWorld*****

7、strip和lstrip和rstrip

  • strip去掉2边的空格或者指定的字符

  • lstrip去掉左边的空格或者指定的字符

  • rstrip去掉右边的空格或者指定的字符

s1="   HelloWorld   "
print(s1.strip())
print(s1.lstrip())
print(s1.rstrip())

# 输出结果为
HelloWorld     # 去掉2边的空格
HelloWorld     # 右边的空格还有
   HelloWorld   # 左边的空格还有


s2="lpkkkkllp"

print(s2.strip("lp"))  # 去掉左右2边含有l或者p字符的  ,不是去掉lp这个字符的,是含有l或者p字符的
print(s2.lstrip("lp"))  # 去掉左边含有l或者p字符的
print(s2.rstrip("lp"))  # 去掉右边含有l或者p字符的

# 输出结果为

kkkk   
kkkkllp
lpkkkk

2、字符的格式化输出

  • 之前字符串连接其他数据类型,比如整型的话,就会报错,现在有了这个格式化输出的话,就不会报错了

1、占位符

  • %d占的是一个十进制的整数

  • %f 浮点数的格式

name="qq"
age=18
score=19.88
print("姓名:%s,年龄:%d,成绩:%.1f" %(name,age,score))

2、f-string

print(f"姓名:{name},年龄:{age},成绩:{score}")

3、str.format方法

# 这个{0} 里面的数字对应着后面的format里面的参数位置
print("姓名:{0},年龄:{1},成绩:{2}".format(name,age,score))

3、数据的验证

img

  • 有一个返回值True或者False

1、isdigit()和isnumeric()

  • 字符只能是数字,阿拉伯的数字,汉字的一二三或者其他的都不认识
print("123".isdigit())
print("一二三".isdigit())
print("一二三".isnumeric())

# 输出结果
True
False
True

2、isalnum和isalpha

  • isalnum 字符有数字或者字符,中文字符也可以

  • isalpha 所有字符都是字母

print("asd".isalpha())
print("asd12".isalpha())
print("asd12".isalnum())

# 输出结果为
True
False
True

3、istitle

  • 单词的首字母是大写,其他字母为小写
print("Hello World".istitle())  # True(每个单词首字母大写,其余小写)
print("hello World".istitle())  # False(第一个单词首字母小写)
print("Hello world".istitle())  # False(第二个单词首字母小写)
print("HelloWorld".istitle())   # False(单词之间没有分隔,被视为一个单词但中间有大写字母)
print("Hello 2World".istitle()) # True(数字不影响,第二个单词首字母大写)
print("".istitle())             # False(空字符串)

4、拼接

  • + 拼接

  • join将列表或者序列的内容进行拼接,元素必须是字符串类型

  • "拼接的字符".join(列表或者元组,可迭代的对象)

s1="abc"
s2="ddd"
print(s1+s2)

# 输出结果为
abcddd

s3="".join([s1,s2])  # 将多个列表进行拼接
print(s3)

5、字符串的去重

  • 一个字符串,另一个空的字符串
s1= "hhhoooddd"
s2=""

for i in s1:
    if i not in s2:
        s2+=i
print(s2)

总结

1. 列表(List)操作

  • 可变的数据类型,里面可以存储多个类型的数据

  • 有序的元素

操作类型 具体操作 示例 说明
创建 直接定义 lst = [1, 2, 3] 用方括号包裹元素
转换其他类型 lst = list((1, 2, 3)) 将元组转换为列表
访问 索引访问 lst[0] 获取索引 0 的元素(从 0 开始)
切片 lst[1:3] 获取索引 1 到 2 的元素(左闭右开)
反向索引 lst[-1] 获取最后一个元素
修改 索引赋值 lst[0] = 10 修改指定索引的元素
添加 append(x) lst.append(4) 在末尾添加元素
insert(i, x) lst.insert(1, 5) 在索引 i 处插入元素 x
extend(iterable) lst.extend([6, 7]) 合并另一个可迭代对象的元素
删除 remove(x) lst.remove(2) 删除第一个值为 x 的元素
pop(i) lst.pop(1) 删除索引 i 的元素并返回该元素(默认最后一个)
clear() lst.clear() 清空列表
其他 len(lst) len(lst) 获取列表长度
x in lst 2 in lst 判断元素是否在列表中
sort() lst.sort() 原地排序(默认升序)
reverse() lst.reverse() 原地反转列表

2. 元组(Tuple)操作

  • 不可变数据类型,但是里面可以存储多种数据类型,列表等等

  • 里面的数据是有序的,可以使用索引

操作类型 具体操作 示例 说明
创建 直接定义 tup = (1, 2, 3) 用圆括号包裹元素(单元素需加逗号:(1,)
转换其他类型 tup = tuple([1, 2, 3]) 将列表转换为元组
访问 索引访问 tup[0] 获取索引 0 的元素
切片 tup[1:3] 获取索引 1 到 2 的元素(左闭右开)
反向索引 tup[-1] 获取最后一个元素
查询 count(x) tup.count(2) 统计元素 x 出现的次数
index(x) tup.index(2) 返回元素 x 第一次出现的索引
其他 len(tup) len(tup) 获取元组长度
x in tup 2 in tup 判断元素是否在元组中

3. 集合(Set)操作

  • 可变数据类型,但是里面存储的是不可变的数据类型(不能是列表,字典)

  • 并且里面自动去重

  • 里面是无序的,每次输出的结果都是不一样的话,因此的话不能使用这个索引

操作类型 具体操作 示例 说明
创建 直接定义 s = {1, 2, 3} 用大括号包裹元素(空集合需用 set()
转换其他类型 s = set([1, 2, 3]) 将列表转换为集合(自动去重)
添加 add(x) s.add(4) 添加元素 x(已存在则忽略)
update(iterable) s.update([5, 6]) 合并另一个可迭代对象的元素
删除 remove(x) s.remove(2) 删除元素 x(不存在则报错)
discard(x) s.discard(2) 删除元素 x(不存在则忽略)
pop() s.pop() 随机删除并返回一个元素(空集合报错)
clear() s.clear() 清空集合
集合运算 交集(&intersection() s1 & s2s1.intersection(s2) 取两个集合的共同元素
并集(` union()`) `s1
差集(-difference() s1 - s2s1.difference(s2) 取 s1 中有而 s2 中没有的元素
对称差集(^symmetric_difference() s1 ^ s2 取两个集合中互不相同的元素
其他 len(s) len(s) 获取集合大小
x in s 2 in s 判断元素是否在集合中

4. 字典(Dictionary)操作

  • 可变的数据类型,但是这个key是不可变的数据类型,只能是字符串或者数据,不能是重复的

  • value的值是可变的,可以重复的

操作类型 具体操作 示例 说明
创建 直接定义 d = {"name": "Alice", "age": 20} 用键值对 key: value 定义
转换其他类型 d = dict([("name", "Bob"), ("age", 21)]) 将键值对列表转换为字典
访问 键访问 d["name"] 通过键获取值(键不存在则报错)
get(key, default) d.get("name", "Unknown") 通过键获取值(键不存在返回 default)
修改/添加 键赋值 d["age"] = 22 键存在则修改值,不存在则添加键值对
update(other) d.update({"gender": "female"}) 合并另一个字典的键值对(覆盖重复键)
删除 del d[key] del d["age"] 删除指定键的键值对
pop(key) d.pop("name") 删除指定键的键值对并返回值
clear() d.clear() 清空字典
查询 keys() d.keys() 返回所有键的视图
values() d.values() 返回所有值的视图
items() d.items() 返回所有键值对的视图((key, value)
其他 len(d) len(d) 获取字典中键值对的数量
key in d "name" in d 判断键是否在字典中

5. 字符串(String)操作

操作类型 具体操作 示例 说明
创建 直接定义 s = "hello"s = 'world' 用单引号、双引号或三引号包裹
访问 索引访问 s[0] 获取索引 0 的字符
切片 s[1:4] 获取索引 1 到 3 的子串(左闭右开)
反向索引 s[-1] 获取最后一个字符
拼接/重复 + 拼接 "hello" + " world" 拼接两个字符串
* 重复 "a" * 3 重复字符串(结果:"aaa"
常用方法 split(sep) "a,b,c".split(",") 按分隔符 sep 分割字符串(结果:["a", "b", "c"]
join(iterable) ",".join(["a", "b"]) 用字符串连接可迭代对象的元素(结果:"a,b"
strip() " hello ".strip() 去除首尾空白字符(结果:"hello"
upper()/lower() "Hello".upper() 转换为全大写/全小写(结果:"HELLO"
replace(old, new) "hello".replace("l", "x") 替换子串(结果:"hexxo"
startswith(prefix) "hello".startswith("he") 判断是否以 prefix 开头(返回 True
endswith(suffix) "hello".endswith("lo") 判断是否以 suffix 结尾(返回 True
其他 len(s) len("hello") 获取字符串长度(结果:5)
x in s "e" in "hello" 判断字符/子串是否在字符串中(返回 True

6、元组和列表的区别

img

7、列表,元组,字典,集合的区别

img

数据类型 表示方式 有序性 可变性 是否允许重复元素 主要特点与常用操作 典型应用场景
列表 []list() 是(有索引) 允许 支持索引、切片、append()pop()sort() 等方法,可动态增删改元素 存储动态数据集合,如待办事项列表
字符串 ''/""/''' ''' 是(有索引) 允许 支持索引、切片、split()join()strip() 等方法,不可修改单个字符 存储文本信息,如名称、描述
元组 ()tuple() 是(有索引) 允许 支持索引、切片,方法较少(count()index()),整体不可修改 存储不可变数据,如坐标 (x,y)
集合 {}set() 不允许 支持 add()remove(),以及交集 &、并集 ` ` 等集合运算,自动去重
字典 {k:v}dict() 是(3.7+) 键不允许 通过键访问值,支持 get()keys()items(),可动态增删改键值对 存储键值关联数据,如用户信息

2、测试

1、千年虫

img

  • 需求

    • 补齐完整的出生年份

    • 0的话前面加上200,除此之外的话,加上19即可

user_list = [88,89,90,00,99]
full_list = [] # 新列表
for i in user_list:
    if str(i) != "0":  # 不等于0的情况下执行
        full_year = "19"+str(i)
    else:
        full_year = "200"+str(i) # 等于0的情况
    full_list.append(full_year)  # 将这些都添加到新列表中去
print(full_list)

# 输出结果为
['1988', '1989', '1990', '2000', '1999']

2、模拟京东的购物

img

  • 首先录入5个商品信息,然后展示5个商品

  • 用户选择购买的商品,不存在要有提示

  • 用户输入q退出循环

  • 显示用户购买的商品,逆序显示

shopp_user = []
user_buy = []
for i in range(0, 5):
    name_shop = input("请输入商品名称(1001 mm):")
    shopp_user.append(name_shop)

for i in shopp_user:
    print(i)

while True:
    user_choose = input("请输入购买的商品编号:")

    # 输入q的时候退出循环
    if user_choose == "q":
        break

    # 遍历这个所有商品,判断购买的商品是否存在
    flag = False  # 这个用来做标记,找到商品就退出,没有找到就打印
    for i in shopp_user:
        if (user_choose in i) and (user_choose != "q"):
            user_buy.append(i)  # 将买的东西添加到新的列表中去
            print("商品已经添加到购物车了")
            flag = True
            break  # 找到了就直接退出这个for循环

    if not flag:  # 这个不能放在遍历商品里面,但输入的商品与遍历的商品比较后,再来执行是否存在该商品,找到的话,为True,就是不会执行,没有找到的话False执行
        print("商品没有找到")

user_buy.sort(reverse=True)
print("购买的商品信息如下")
print("——" * 30)
for i in user_buy:
    print(i)

3、模拟12306购物订票

img

  • 用户购票,没有票提示,有票显示时间,到哪的
subwey={
    "G3333":["北京南-天津南","16:06","18:39","00:33"],
    "G5555":["北京南-天津动","16:06","18:39","00:33"],
    "G6666":["北京南-天津系","16:06","18:39","00:33"],
    "G7777":["北京南-天津被","16:06","18:39","00:33"]
}
print("车次\t出发站-到达站\t出发时间\t达到时间\t历经时长")
for k,v in subwey.items():
    print(k,end=" ")
    for i in v:  # i 里面存储的是列表
        print(i,end=" ")
    print()

use_choose=input("请输入购买的车次:")
flag=False  # 用来标记是否存在这个车次
for i in subwey.keys():  # 这个i是一个键
    if use_choose in i:
        name=input("请输入乘车人,如果有多为乘车人的话,用逗号隔开:")
        print("你已经购买了", use_choose,"乘车人信息",name,"尽快换取纸质车票",subwey.get(i)[0],subwey.get(i)[1])
        flag=True
        break

if not flag:
    print("没有这个车次的信息")
  • 使用字典的获取方法
subwey={
    "G3333":["北京南-天津南","16:06","18:39","00:33"],
    "G5555":["北京南-天津动","16:06","18:39","00:33"],
    "G6666":["北京南-天津系","16:06","18:39","00:33"],
    "G7777":["北京南-天津被","16:06","18:39","00:33"]
}
print("车次\t出发站-到达站\t出发时间\t达到时间\t历经时长")

use_choose = input("请输入购买的车次:")

info = subwey.get(use_choose,"车次不存在")  # 这个info是一个列表,不存在的话,输出车次不存在
if info !="车次不存在":
    name=input("请输入乘车人,如果有多为乘车人的话,用逗号隔开:")
    print("已经购买了",use_choose,info[0],info[1],"开","姓名:",name)

else:
    print("车次不存在")

4、模拟手机通讯录

img

  • 使用的是集合,因为通讯录是无序的
user_save=set()
for i in range(0,5):
    name=input(f"请输入第{i+1}位姓名和电话号码:")
    user_save.add(name)

for i in user_save:
    print(i)

5、判断车牌归属地

6、统计字符串中出现指定字符的次数

  • 不分区大小写

7、格式化输出商品的名称和单价

img

posted @ 2025-09-11 19:02  乔的港口  阅读(8)  评论(0)    收藏  举报