容器类型
字符串 str
一系列字符组成的不可变序列容器,存储的是字符的编码值
#字 --> 数
num01 = ord("a")
print(num01)
#数-->字
str01 = chr(98)
#获取一个字符串,打印每个字符的编码值
my_string = "Hello, World!"
for char in my_string:
print(ord(char))
#重复录入一个编码值,然后打印字符,
#如果是空字符就退出程序
while True:
# 重复让用户输入编码值
code = input("请输入编码值(空字符退出): ")
# 如果输入的是空字符,则退出程序
if code == "":
break
# 转换编码值为整数
code = int(code)
# 打印对应的字符
char = chr(code)
print(char)
下面是一些Python中常见的字符串字面值的示例:
-
空字符串:
""
或''
-
单行字符串:
"Hello, World!"
或'Hello, World!'
-
多行字符串(使用三个引号):
message = """这是一个 多行字符串, 包含多个 换行符。"""
-
转义字符:
"转义字符:\\, \', \", \n(换行), \t(水平制表符)"
或'转义字符:\\, \', \", \n, \t'
-
字符串格式化:
f"我的名字是{name},年龄是{age}岁。"
其中,name
和 age
是变量名,可替换为任意值。在使用 f
字符串格式化时,使用 {}
包含变量名即可插入变量值。
通用操作
-
字符串的拼接:使用加号
+
可以将多个字符串连接起来,例如"hello" + "world"
将返回字符串"helloworld"
。 -
字符串的重复:使用乘号
*
可以将一个字符串重复多次,例如"hello" * 3
将返回字符串"hellohellohello"
。 -
字符串的索引:可以使用中括号
[]
来获取字符串中特定位置的字符,索引从 0 开始,例如"hello"[0]
将返回字符"h"
。 -
字符串的切片:可以使用中括号
[]
来获取字符串中一段特定位置的子串,语法为string[start:end:step]
,其中start
表示起始位置,end
表示结束位置(不包括该位置的字符),step
表示步长,默认为 1,例如"hello"[1:4:2]
将返回字符串"el"
。 -
字符串的长度:可以使用
len()
函数来获取字符串的长度,例如len("hello")
将返回数字 5。 -
字符串的查找:可以使用
find()
、index()
、rfind()
、rindex()
等方法来查找字符串中特定子串的位置,其中find()
和index()
返回第一个匹配的位置,如果没有匹配则返回 -1 或报错,rfind()
和rindex()
返回最后一个匹配的位置,如果没有匹配则返回 -1 或报错。 -
字符串的替换:可以使用
replace()
方法来将字符串中的部分子串替换为新的子串,例如"hello world".replace("world", "python")
将返回字符串"hello python"
。 -
字符串的分割:可以使用
split()
方法来将字符串按照特定的字符或子串进行分割,分割完成后将返回一个列表,例如"hello world".split(" ")
将返回列表["hello", "world"]
。 -
字符串的格式化:可以使用
%
或format()
方法来将字符串中的某些部分替换为特定的值
height = 100
count = 0
distance = height
while height/ 2> 0.01:
count +=1
height /= 2
distance += height *2
print ("第%d次弹起来的高度是%f."%(count,height))
print("总共经过的距离:%.2f"%distance)
print ("总共弹起来%d次"%count)
列表 list
- 元素的生成:
# 方法1:使用列表推导式生成列表
my_list = [x for x in range(10)] # 生成0-9的数字列表
print(my_list)
# 方法2:使用range函数生成列表
my_list = list(range(10)) # 生成0-9的数字列表
print(my_list)
# 方法3:手动添加元素
my_list = []
for i in range(10):
my_list.append(i)
print(my_list)
输出结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- 元素的获取:
my_list = [1, 2, 3, 4, 5]
print(my_list[0]) # 获取第一个元素
print(my_list[-1]) # 获取最后一个元素
print(my_list[1:3]) # 获取第2-3个元素
print(my_list[:3]) # 获取前三个元素
print(my_list[2:]) # 获取第3个及以后的元素
输出结果:
1
5
[2, 3]
[1, 2, 3]
[3, 4, 5]
- 元素的添加:
my_list = [1, 2, 3]
my_list.append(4) # 添加单个元素
print(my_list)
my_list.extend([5, 6]) # 添加多个元素
print(my_list)
my_list.insert(0, 0) # 在指定位置插入元素
print(my_list)
输出结果:
[1, 2, 3, 4]
[1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6]
- 元素的删除:
my_list = [1, 2, 3, 4, 5]
del my_list[2] # 删除第3个元素
print(my_list)
my_list.remove(4) # 删除元素4
print(my_list)
my_list.pop() # 删除最后一个元素
print(my_list)
my_list.clear() # 清空列表
print(my_list)
输出结果:
[1, 2, 4, 5]
[1, 2, 3, 5]
[1, 2, 3]
[]
li = []
while True:
i = str(input("输入西游记中喜欢的人物:"))
if i == "" :
break
li.append(i)
for item in li:
print(item)
for item in reversed(li[1:4]):
print(item)
###
li = []
while True:
i = input("输入成绩:")
if i == "" :
break
li.append(int(i))
for item in li:
print(item)
print("最高分:"+ str(max(li)))
print("最低分:"+ str(min(li)))
print("平均分:"+ str(sum(li)//len (li)))
###
li = []
while True:
i = input("输入姓名:")
if i == "" :
break
if i not in li:
li.append(i)
else:
print("学生已存在")
#倒叙输出列表
for item in range(-1,-len(li)-1,-1):
print(li[item])
#
max_value = 0
for i in range(4):
number01 = int(input("请输入%d个数字:"%(i+1)))
if max_value <number01 :
max_value = number01
print(max_value)
import random
li = [random.randint(12, 100) for _ in range(10)]
for i in range(10):
number02 = li[i]
if max_value < number02:
max_value = li[i]
print(max_value)
#挑出最大值
max_value = 0
for i in range(4):
number01 = int(input("请输入%d个数字:"%(i+1)))
if max_value <number01 :
max_value = number01
print(max_value)
import random
li = [random.randint(12, 100) for _ in range(10)]
max_value = li[0] # 初始化为列表第一个元素
for i in range(10): # 由于下标从 0 开始,应将范围改为 0 到 9
number02 = int(li[i])
if max_value < number02:
max_value = li[i]
print(max_value)
#将大于10的删掉
import random
li = [random.randint(12, 100) for _ in range(10)]
print(li)
i = 0
while i < len(li):
number02 = li[i]
if number02 > 10:
li.remove(number02)
i -= 1 # 删元素后下标减一
i += 1
print(li)
for i in li :
if i >10:
li.remove(i)
print(li)
- 字符串拼接
#优点:每次循环只向列表添加字符串,没有创建列表对象
list_temp = [str(i) for i in range(10)]
print(list_temp)
for item in range(10):
list_temp.append(str(item))
#join : list ---> str
result = "-".join(list_temp)
print(type(result))
print(result)
#str --> list
str01 = "张无忌-赵敏-周芷若"
list_result = str01.split("-")
print(list_result)
###exercise
import random
red_ticket = [random.randint(1,33) for _ in range(6)]
red_ticket = random.sample(range(1, 34), 6) # 值不重复
blue_ticket = random.randint(1,16)
red_ticket.append(blue_ticket)
print (red_ticket)
print (blue_ticket)
#生成一注号码
list_ticket = []
while len(list_ticket) < 6:
numbers = int(input("输入第%d个红球号码:"%(len(list_ticket)+1)))
if numbers >33 or numbers <1:
print("号码不在范围")
elif numbers in list_ticket:
print ("号码重复")
else :
list_ticket.append(numbers)
while len(list_ticket) < 7:
numbers = int(input("输入蓝球号码:"))
if numbers <1 or numbers >16:
print("号码不在范围")
else :
list_ticket.append(numbers)
print (list_ticket)
- 列表推导式
l = [i **2 for i in range(1,11)]
print(l)
l = [i **2 for i in range(1,11) if i%2==0]
print(l)
元组 tuple
元组是 Python 内置的一种数据类型,它可以存储多个元素,但是一旦创建后就不能修改元素的值。元组使用圆括号 ( ) 来创建,其中每个元素用逗号隔开。下面是一个创建元组的例子:
my_tuple = (1, 2, 3, 4, 5)
my_tuple = tuple(i for i in range(1,56))
获取元组中的元素可以通过索引来实现,和列表一样,元组的索引是从 0 开始的。例如,如果要获取上面元组中的第一个元素,可以写成:
first_element = my_tuple[0] # 1
遍历元组中的元素可以使用 for
循环来实现,和列表类似,例如:
for element in my_tuple:
print(element)
这样就可以依次遍历元组中的所有元素并打印出来。如果需要同时遍历元组中的索引和元素,可以使用 enumerate()
函数来实现,例如:
for index, element in enumerate(my_tuple):
print(index, element)
这样就可以依次遍历元组中的所有元素,并且获得每个元素所对应的索引。
#日期转天数
import random
day_of_month = tuple(random.randint(30, 31) for _ in range(12))
month = int(input("输入月份:"))
date = int(input("输入日期:"))
day = 0
# 累加前几个月
for i in range(month - 1):
day += day_of_month[i]
# 累加当月天数
day = day + date
print("这一年的第%d天"%day)
#方法二
day = sum(day_of_month[:month-1])
day +=date
print("这一年的第%d天"%day)
字典 dict
字典(Dictionary)是Python中的一种数据结构,用于存储键值对(key-value pairs)。字典中的键必须是唯一的,而值可以是任意的对象。字典也称为关联数组、哈希表、映射等。
字典可以通过花括号{}或者dict()函数来创建。例如:
# 方式一:使用花括号创建字典
my_dict = {'name': 'Tom', 'age': 18, 'gender': 'male'}
# 方式二:使用dict()函数创建字典
my_dict = dict(name='Tom', age=18, gender='male')
字典中的值可以通过键来获取,也可以通过get()方法来获取。例如:
my_dict = {'name': 'Tom', 'age': 18, 'gender': 'male'}
# 通过键获取值
name = my_dict['name']
age = my_dict['age']
gender = my_dict['gender']
# 通过get()方法获取值
name = my_dict.get('name')
age = my_dict.get('age')
gender = my_dict.get('gender')
字典也支持添加、修改和删除键值对的操作。例如:
my_dict = {'name': 'Tom', 'age': 18, 'gender': 'male'}
# 添加键值对
my_dict['city'] = 'Shanghai'
# 修改键值对
my_dict['age'] = 19
# 删除键值对
del my_dict['gender']
字典也可以被遍历。例如:
my_dict = {'name': 'Tom', 'age': 18, 'gender': 'male'}
# 遍历键
for key in my_dict:
print(key)
# 遍历值
for value in my_dict.values():
print(value)
# 遍历键值对
for key, value in my_dict.items():
print(key, value)
#exercise
dict_commodity_info = {}
while True:
name = input("请输入商品信息:")
if name =="":
break
price = input("请输入价格:")
dict_commodity_info[name]= price
for k,v in dict_commodity_info.items():
print(k,v)
##嵌入列表
dict_commodity_info = {}
while True:
name = input("请输入姓名:")
if name =="":
break
age = int(input("请输入年龄:"))
grade = int(input("请输入成绩:"))
sex = input("请输入性别:")
dict_commodity_info[name]= [age,grade,sex]
for k,v in dict_commodity_info.items():
print("%s的年龄是%d,成绩是%d,性别是%s"%(k,v[0],v[1],v[2]))
print(k,v )
#字典内嵌字典
dict_commodity_info = {}
while True:
name = input("请输入姓名:")
if name =="":
break
age = int(input("请输入年龄:"))
grade = int(input("请输入成绩:"))
sex = input("请输入性别:")
dict_commodity_info[name]= {"age":age,"grade":grade,"sex":sex}
for k,v in dict_commodity_info.items():
print("%s的年龄是%d,成绩是%d,性别是%s"%(k,v["age"],v["grade"],v["sex"]))
print(k,v )
###列表内嵌入字典
dict_commodity_info = {}
while True:
name = input("请输入姓名:")
if name =="":
break
age = int(input("请输入年龄:"))
grade = int(input("请输入成绩:"))
sex = input("请输入性别:")
dict_commodity_info= {"age":age,"grade":grade,"sex":sex}
lie = [name,dict_commodity_info]
for v in lie:
print("%s的年龄是%d,成绩是%d,性别是%s"%(v[0],v[1]['age'], v[1]['grade'], v[1]['sex']))
print(lie)
字典
- 优点
根据键获取值,读取速度快
代码可读性相对列表更高 - 缺点
内存占用大
获取值只能根据键,不灵活
列表
- 优点
根据索引/切片,获取元素更灵活
相比字典占内存更小 - 缺点
通过索引获取,如果信息较多,可读性不高