Python基础--03

容器类型

字符串 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}岁。"
    

其中,nameage 是变量名,可替换为任意值。在使用 f 字符串格式化时,使用 {} 包含变量名即可插入变量值。

通用操作

  1. 字符串的拼接:使用加号 + 可以将多个字符串连接起来,例如 "hello" + "world" 将返回字符串 "helloworld"

  2. 字符串的重复:使用乘号 * 可以将一个字符串重复多次,例如 "hello" * 3 将返回字符串 "hellohellohello"

  3. 字符串的索引:可以使用中括号 [] 来获取字符串中特定位置的字符,索引从 0 开始,例如 "hello"[0] 将返回字符 "h"

  4. 字符串的切片:可以使用中括号 [] 来获取字符串中一段特定位置的子串,语法为 string[start:end:step],其中 start 表示起始位置,end 表示结束位置(不包括该位置的字符),step 表示步长,默认为 1,例如 "hello"[1:4:2] 将返回字符串 "el"

  5. 字符串的长度:可以使用 len() 函数来获取字符串的长度,例如 len("hello") 将返回数字 5。

  6. 字符串的查找:可以使用 find()index()rfind()rindex() 等方法来查找字符串中特定子串的位置,其中 find()index() 返回第一个匹配的位置,如果没有匹配则返回 -1 或报错,rfind()rindex() 返回最后一个匹配的位置,如果没有匹配则返回 -1 或报错。

  7. 字符串的替换:可以使用 replace() 方法来将字符串中的部分子串替换为新的子串,例如 "hello world".replace("world", "python") 将返回字符串 "hello python"

  8. 字符串的分割:可以使用 split() 方法来将字符串按照特定的字符或子串进行分割,分割完成后将返回一个列表,例如 "hello world".split(" ") 将返回列表 ["hello", "world"]

  9. 字符串的格式化:可以使用 %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. 元素的生成:
# 方法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]
  1. 元素的获取:
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]
  1. 元素的添加:
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]
  1. 元素的删除:
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)

字典

  • 优点
    根据键获取值,读取速度快
    代码可读性相对列表更高
  • 缺点
    内存占用大
    获取值只能根据键,不灵活

列表

  • 优点
    根据索引/切片,获取元素更灵活
    相比字典占内存更小
  • 缺点
    通过索引获取,如果信息较多,可读性不高
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值