python-string
string的内置方法:
注:对于单个字符的编码,python提供了ord()函数获取字符整数的表示,chr()把编码转换成字符的表示。
1、查找:
从左到右找字符
index: 没有找到报错
find: 没有找到返回-1
两者都是返回要查找的内容的下标位置
从右往左查找字符
rindex():
rfind():
s1="https://imgsa.baidu.com/forum/crop%3D10%2C0%2C559%2C419%3Bwh%3D227%2C170%3B/2b2118bb9.jpg" # ss.rfind("/") a = s1.rfind('/') print(a) print(s1[a + 1::])
2、替换
replace(old,new,count):表示用new的替换新的字符,默认有多少替换多少
# 替换 replace s = 'hello welcome to beijing' s = s.replace('to', '88') print(s)
3、分割:split
split('分隔符',[最大的切割数]) :返回的分割后的列表,如果没有指定最大切割数,遇到就切割
# 切割 split s = 'hello welcome to beijing' list = s.split(' ') print(list)
4、转换:
upper() 转大写
lower() 转小写
title() 每个单词首字母大写
capitalize() 字符串的第一个单词的首字母大写
# 大小写 # 验证码 import random code = '' base_str = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM' for i in range(4): r = random.randint(0,len(base_str)-1) code += base_str[r] print('验证码是:',code) in_code = input('输入验证码') if code.lower() == in_code.lower(): print('输入正确') else: print('输入错误')
s= 'hello beijing welcome you' # s = s.title() s = s.capitalize() print(s)
5、字符串判断的相关函数:
isupper() 是否大写
islower() 是否小写
isalpha() 是否字符串只有字母组成,返回true或false
isdight() 是否是纯数字
startswith() 是否以指定内容开头
endswith() 是否以指定内容结尾
s = 'hello nihao' a = s.isupper() print(a) a = s.islower() print(a) a = s.isalpha() print(a) qq = input('qq号码:') print(qq.isdigit()) if qq.isdigit() and 5<=len(qq)<=10 and not qq.startswith('0'): print('qq号码正确') else: print('qq号码不正确') # 文件上传:只能上传指定的格式(png,jpg,gif) file = input('上传路径:') if file.endswith('.jpg') or file.endswith('.png') or file.endswith('.gif'): print('是图片允许上传') else: print('只能上传图片(png,hpg,gif)')
6、对齐与格式:
center(width)
ljust(width)
rjust(width)
a = '年后飞洒地方' b = a.center(20) c = a.rjust(20) print(b) print(c)
7、去除空格:
strip():去除字符串左右两边的空格
lstrip():去除左面的空格
rstrip():去除右面的空格
# 去除空格 s = ' asdf ' a = s.strip() print(a) b= s.lstrip() print(b)
8、字符串能支持的符号:
+:str + str
*: str*5
in: 内容 in 字符串
is: 两个字符串判断地址是否相等
==:比较内容
[]:下标或者切片 s[0] s[::6]
%:字符串的格式化
列表:
1、创建
list1=[]
list2=[1,3,6,8]
特点:
1. 没有长度限制
2. 可以存放任意类型
3. 允许存放重复元素
# 创建容器类型:list cars = [] # 空列表 cars = ['京001','京002','京003','京004'] scores = [23,12,24,25,'0分'] print(cars) print(scores)
2、内容的访问
1、取一个元素:list1[下标]
2、取多个元素:借助于切片,类似字符串用法
list[start:] 从start到结尾
list[:end] 从0到end-1
list[start:end] 从start到end-1
list[start:end:step] 从start到end-1,每次的步长step
逆序:step必须是负数
list[::-step] 逆序输出整个列表
list[start:end:-step] 从start到end-1,每次的步长step(从左到右)
# 从列表中获取内容:支持下标或者索引 下标也是从0开始的到_len(列表)-1___结束 print(cars[0]) print(cars[2]) print(len(cars)) # print(cars[len(cars)]) # IndexError: list index out of range # 队列: FIFO first in first out # 列表也是支持切片 print(cars[:2]) print(cars[1:]) print(cars[-1]) print(cars[0]) print(cars[::-1]) print(cars[1:4:2]) print(cars[-2:1:-1]) print(cars[::-2])
3、内置函数
1-增加:
Append 列表的末尾追加
Extend 将一个可迭代的对象添加到列表中(一次添加多个元素)
Insert(insex,object):将对象object插入到index的位置(插队)
# 停车场 car_park = [] # 添加 car_park.append('京001') car_park.append('京002') car_park.append('京003') car_park.append('京004') # 查询 # print(car_park) for car in car_park: print(car) # insert(位置,元素) car_park.insert(0,'京009') print(car_park) car_park1 = ['京006'] car_park1.extend(car_park) print(car_park1)
2-删除:
remove(object): 直接从列表中删除第一个找到的元素,如果没有找到要删除的元素则报错:
ValueError: list.remove(x): x not in list
pop([index]):
1. pop() 表示删除列表的最后一个元素
2. pop(index) 删除index对应的元素
clear()
del 列表[下标]
del 列表
numbers = [1, 3, 5, 6, 7, 8, 9] numbers.remove(5) print(numbers) numbers.pop() print(numbers) numbers.pop(3) print(numbers) del numbers[1] print(numbers) print(id(numbers)) # numbers.clear() # 清空内容,地址保留 # del numbers # 既清空内容也删除地址
3-修改和查询
修改: 列表[位置]=新值 新值则替换该位置旧值
查询:number.index(6) #参数是要查找对象,返回的是对象的位置,如果没有报错
print(numbers) pos = numbers.index(6) # 参数是要查找对象,返回的是对象的位置,如果没有报错 print(pos) # 更改: 列表[位置]=新值 新值则替换该位置旧值 numbers[pos] = 9 print(numbers)
编程题:简化版停车管理系统
# __author:gang # date: 2019/7/28 import random import time print('**'*25) print('----------------欢迎进入至诚停车场----------------') print('**'*25) car_list =[] # 停车列表 car_max = 5 # 最大停车数量 cur_car = 0 # 当前停车数量 pos_list = ['1位置','2位置','3位置','4位置','5位置'] while True: choice = input('请选择:1、进入停车场 2、离开停车场 3、查询车辆 4、查询所有车辆 5、退出系统:') if choice =='1': # 进入停车场 # 当前停车数量小于最大停车数时执行下面代码 while cur_car>=car_max: print('抱歉,停车位已满!') break else: che_pai = input('请输入您的车牌号:') start = time.time() # 时间戳 # 产生随机位置 pos = random.choice(pos_list) # 在车位列表中删除车位 pos_list.remove(pos) print('欢迎{}车主停车成功....'.format(che_pai)) car_message = [che_pai, start,pos] car_list.append(car_message) # 将车牌、时间压入停车列表中 cur_car += 1 elif choice =='2': # 离开停车场 print('-----离开停车场----') # 请输入车牌号 che_pai1 = input('请输入您的车牌号:') for car_msg in car_list: if che_pai1 in car_msg: # 判断该车在不在列表中 end = time.time() # 定义离开时间 a = (end - start)//3600 # 停车时间 money = (a+1)*5 # 停车费 print('{}用户,您的停车时间为:{}小时,应该缴费:{}'.format(che_pai1,a,money)) time.sleep(2) print('缴费成功,欢迎下次再来!!!') # 将占用位置释放 pos_list.append(car_msg[2]) cur_car -= 1 # 删除车辆信息 car_list.remove(car_msg) break else: print('您的爱车不在车场中...') elif choice =='3': # 查询车辆 find_car = input('请输入车牌号:') for car_msg in car_list: if find_car in car_msg: print('您的爱车在停车场中!') break else: print('抱歉,您的爱车不在停车场中') elif choice =='4': # 查询所有车辆 print('------车辆信息列表-------') for car_msg in car_list: print(car_msg[0],car_msg[1],car_msg[2]) elif choice =='5': tui_chu = input('是否退出系统?y/n:') if tui_chu.lower() == 'y': print('欢迎下次光临,系统正在退出...') time.sleep(1) break else: print('输入错误,请重新选择!!!')