字符串、列表、字典

字符串:
一个字节最多存数字255,那么数字100,可以放入一个字节,而字符串“100”,需要三个字节,c语言最小单位4个字节,python是高层语言,不会牵扯太多底层,它最小可一个字节,先这么理解。
len(x)测x的长度
【字符串、列表、字典】name = “abcdef”
name[x]出name中x位置的值,x从0开始,但x的值不能大于name的长度,不然就是越界,程序会立马崩掉,非常危险,一定要避免。
取出name值中最后一个字母:name[len(name)-1],还可以name[-1]

切片:从某字符开始,取一片,案例如下:
name=”abcdfdgdg”
取一段,如name[2:5]可取到cdf,但只能取到2-4,取不到第5个,想要取第五个,可以name[2:6],也就是只能取到:x的左边前一位,不论正负数。name[2:-1]也只能取到倒数第二个,要想取完需要如下操作:name[2:]即可。
name[2:-1:2]默认步长是1,最后的:2表示改变默认步长为2.即每2个字符取一个。
倒序:name[-1:0]但此时步长为正1,往右走,那么此时结果为空,没取到。
想倒序取到东西,需要步长为负1:name[-1:0:-1],倒序取完:name[-1::-1]

字符串常见操作:
找下标:name.find(“ab”)从左往右找,为正数代表有,为-1代表没有。name.rfind(“fsdfd”)从右往左找。name.index(“fdsaf”),它也可以找,但与find的区别是index没找到直接抛出异常。
name.count(“fasdfd”):查看fasdfd出现的次数,统计的作用。
name.replace(“d”,”a”):把d换成a,但不会改变原字符串,只是返回值,元祖,字符串都是不可变。
name.replace(“d”,”a”,1)从左到右替换,只替换第一个。
name.split(“ “):按空格切割,返回列表,当需要切掉空格和\t等要求时,直接split()即可。
name.capitalize():字符串首字母大写。
name.title():字符串中没单词字母都大写。
name.startswich():以什么字符串开头。比如判断以什么姓开头。
name.endswich():以什么字符串结尾。可判断文件后缀是否为要求的,比如txt后缀的,但有漏到,不能对内容判断。
name.lower():将所有大写字符为小写。可在用户输入无论大小写都能判断。
name.upper():将所有小写转为大写。
name.rjust(5):向右5字符靠齐
name.ljust(5):向左5字符靠齐
name.center(5):向中间共5字符靠齐。
name.lstrip():去掉字符串左边的空格。
name.rstrip():去掉字符串有点的空格。
name.strip():去掉所有空格。
name.partition(“x”):以x为中心,将字符串分为左右含自己一共三组,x留下,返回元组,而且找到第一个就返回结果。
name.splitlines():将字符串中换行符去掉,然后返回新的列表。
name.isalpha():判断是否为纯字母。
name.isdigit():判断是否为纯数字。
name.isalnum():判断是含数字和字母。
name.isspace():判断是否只包含空格。
name.join(x):以x将两字符串连成一体。

列表,一个变量保存多个数据,类似c语言当中的数组:
names = [“a”,”b”,”3”],可不同数据类型同时存。

names.append(“laozhao”):增加names成员,添加到原有列表最后,laozhao如果是列表,就把列表整体带列表符加进去。注意点,a.append(b)代表把b添加进到a,此时a.append(b)并没有值为空,因为它只是一个动作,如果此时用c来接收它c=a.append(b)那么c=none。

names.insert(位置,要添加的内容):意为添加还可插队。
names.extend(names3):把names3合到names里面去,如果names是列表,那么extend的意思是把names3的一个个值加进去。
name.pop():把列表最后一个成员删除。
栈:先进去的后出来,后进去的先出来,例如电梯,电梯快满时,后进去的人到站时需先出来。
队列:先进先出,后进后出。
name.remove(“a”):删除列表中第一个a。
列表也可以通过下标也可以切片
del names[0]:删除names中下标为0的。
names[1]=x:修改names中下标为1的值改为x。

名字管理系统:
while True:死循环。

通过下标修改值的时候很容易修改错了,有很大漏洞。一般会用列表里嵌套字典。
字典:有很多信息元素需要定义时,name = {键:值,键:值},通过K来找,不通过下标来找,所以顺序不重要。
print(“%s %d %s”(infor[“name”],infor[“addr”],infor[“age”]))
字符串、列表、字典
文章图片
#1. 打印功能提示
print("="*50)
print("名片管理系统 V0.01")
print(" 1. 添加一个新的名片")
print(" 2. 删除一个名片")
print(" 3. 修改一个名片")
print(" 4. 查询一个名片")
print(" 5. 显示所有的名片")
print(" 6. 退出系统")
print("="*50)

#用来存储名片
card_infors = []

while True:

#2. 获取用户的输入
num = int(input("请输入操作序号:"))

#3. 根据用户的数据执行相应的功能
if num==1:
new_name = input("请输入新的名字:")
new_qq = input("请输入新的QQ:")
new_weixin = input("请输入新的微信:")
new_addr = input("请输入新的住址:")

#定义一个新的字典,用来存储一个新的名片
new_infor = {}
new_infor['name'] = new_name
new_infor['qq'] = new_qq
new_infor['weixin'] = new_weixin
new_infor['addr'] = new_addr

#将一个字典,添加到列表中
card_infors.append(new_infor)

#print(card_infors)# for test

elif num==2:
pass
elif num==3:
pass
elif num==4:

find_name = input("请输入要查找的姓名:")

find_flag = 0#默认表示没有找到

for temp in card_infors:
if find_name == temp["name"]:
print("%s\t%s\t%s\t%s"%(temp['name'], temp['qq'], temp['weixin'], temp['addr']))
find_flag=1#表示找到了
break

#判断是否找到了
if find_flag == 0:
print("查无此人....")
elif num==5:
print("姓名\tQQ\t微信\t住址")
for temp in card_infors:
print("%s\t%s\t%s\t%s"%(temp['name'], temp['qq'], temp['weixin'], temp['addr']))
elif num==6:
break
else:
print("输入有误,请重新输入")


print("")

一般采用name.get(“fsad”)来取字典里的键值,而不用name[fsad]。
字符串、列表、字典
文章图片


for循环里加while 还可以for else,其他语言里没有。
字符串、列表、字典
文章图片

items可以取得字典里的各元素:
字符串、列表、字典
文章图片

如果元祖里有两个值,如果用新的两个变量来接收,那么就会拆包:
字符串、列表、字典
文章图片
字符串、列表、字典
文章图片




转载于:https://blog.51cto.com/liukexing/1969577

    推荐阅读