find
find作用:
返回字符串搜索的最小索引。
rfind: 返回最大索引
replace
center
复制,返回上一步
选中文字:
按 ctrl + d 自动复制到后面:
ctrl + z 返回上一步:
光标至于所在行:
ctrl + d :复制到下一行:
count
print('hello'.count('l')) 统计l 的数量
print('hello'.count('ll')) 统计ll的数量
print(len('hello')) 统计字符长度用len函数
分离split,连接join
分离
s = '172.25.254.250'
s1 = s.split('.') 以点为分隔符分开
print(s1)
print(s1[::-1]) 倒叙
连接
date = '2019-04-15'
date1 = date.split('-') 以-为分隔符分开
print(date1)
print(''.join(date1)) 无连接符
print('/'.join(date1)) 以/为分隔符连接
练习:
给定一个字符串来代表一个学生的出勤纪录,这个纪录仅包含以下三个字符>: ‘A’ : Absent,缺勤 ‘L’ : Late,迟到 ‘P’: Present,到场 如果一个学生的出勤纪录中不超过一个’A’(缺勤)并且不超过两个连续的’L’(迟到), 那么这个学生会被奖赏。
你需要根据这个学生的出勤纪录判断他是否会被奖赏。 示例 1: 输入: “PPALLP” 输出: True 示例 2: 输入:
“PPALLL” 输出: False
s = input()
if s.count('A') <= 1 and s.count('LLL') == 0:
print(True)
else:
print(False)
print(s.count('A') <= 1 and s.count('LLL') == 0)
也可以改写为:
括号内条件的结果本来就为布尔值。True或Flase,我们可以直接打印出来。
练习二:
- 题目描述:
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用 空格分割, 单词之间只有一个空格,前后没有空格。 比如:
- 示例1:
- 输入:hello xiao mi
- 输出:mi xiao hello
li = input().split()
# print(li) 查看效果
# print(li[::-1]) 查看效果
print(' '.join(li[::-1])) 最终命令
简化:
print(' '.join(input().split()[::-1]))
效果:
练习三:
- 题目描述: 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,>输入”They are students.”和”aeiou”, 则删除之后的第一个字符串变成”Thy r stdnts.”
s1 = input('s1:')
s2 = input('s2:')
for i in s1:
if i in s2:
s1 = s1.replace(i,'')
print(s1)
练习四:
- 设计一个程序,帮助小学生练习10以内的加法
详情:
- 随机生成加法题目;
- 学生查看题目并输入答案;
- 判别学生答题是否正确?
- 退出时, 统计学生答题总数,正确数量及正确率(保留两>位小数点);
import random 导入随机数模块
count = 0 总答题数
right = 0 答对数
while True: 死循环
a = random.randint(0,9) 导入a,b
b = random.randint(0,9)
print('%d+%d' %(a,b)) 题目
question = input('please inout your answer:(q for exit)') 用户回答
result = a + b
if question == str(result): 转换类型
print('ok!')
count +=1
right +=1
elif question == 'q': 退出选择
print('exit')
break
else:
print('Failed')
count += 1
percent = right / count
print('测试结束,共回答%d道题,正确个数为%d,正确率为%.2f%%' %(count,right,percent * 100))
list(列表)数据类型
普通数组:
Z = [ 13,15,17]
只能存放同一类型数据。
列表:增强版的数组,可以存放任意类型的数据。,而且列表本事就是一个数据类型。
li = [1,1.2,True,'tom',[1,2,3,4,5]]
print(li)
print(type(li))
列表特性
service = ['http','ftp','ssh']
索引:
print(service[0])
print(service[-1])
切片:
print(service[::-1])
print(service[1:])
print(service[:-1])
重复:
连接:
成员操作符:
迭代(循环遍历):
嵌套列表中的索引切片:
service2 = [['http','80'],['ssh','22'],['ftp','21']]
# index
print(service2[0][1])
print(service2[-1][1])
#slide
print(service2[:][1])
print(service2[:-1][0])
练习:
假定有下面这样的列表:
names = [‘fentiao’, ‘fendai’, ‘fensi’, ‘apple’]
输出结果为:‘I have fentiao, fendai, fensi and apple.’
ames = ['fentiao', 'fendai', 'fensi', 'apple']
print('I have ' + ', '.join(names[:-1]) + ' and ' + names[-1])
列表的添加
# tianjia
service = ['http','ftp','ssh']
print(service + ['firewall'])
#append
service.append('https')
print(service)
#extend
service.extend(['mysql','firewall'])
print(service)
#insert 在指定位置加入
service.insert(1,'samba')
print(service)
列表的删除
在 Python 列表中删除元素主要分为以下 3 种场景:
根据目标元素所在位置的索引进行删除,可以使用 del 关键字或者 pop() 方法;
根据元素本身的值进行删除,可使用列表(list类型)提供的 remove() 方法;
将列表中所有元素全部删除,可使用列表(list类型)提供的 clear() 方法。
>>> service = ['http','ftp','ssh']
>>> service
['http', 'ftp', 'ssh']
>>> service.pop() pop弹出一个函数。
'ssh'
>>> service
['http', 'ftp'] 可以看见不见ssh了
由于企业中我们弹出的东西还存在于内存中,我们日后可能会用到,所以赋给一个变量。
>>> service = ['http','ftp','ssh']
>>> a = service.pop()
>>> a
'ssh'
>>> service
['http', 'ftp']
弹出指定位置。
###remove
直接删除列表中的值。
可以看到a为空值,因为ftp已经删除了
###从内存中删除 del
####根据索引删除
a = [1,2,3,4,5]
del a[2:4]
print a
del a[-1]
print a
####清空列表
- a = [] :
- 对于一般性数据量超大的list,快速清空释放内存,可直接用 a = [] 来释放。其中a为list。
- del a[:]:
- 对于作为函数参数的list,用上面的方法是不行的,因为函数执行完后,list长度是不变的,但是可以这样在函数中释放一个参数list所占内存: del a[:],速度很快,也彻底:
列表的更改
索引:
切片:
列表的查看
#chakan
service = ['http','ftp','nfs','http']
print(service.count('http')) 查看http个数
print(service.index('nfs')) 查看nfs所在位置
print(service.index('http',0,13)) 在0~13字符间搜索http
有两个http,nfs在第三个,http在第一个。
列表的排序
#paixu
service = ['http','ftp','nfs','http']
service.sort()
print(service)
默认按照ASCII码排序。
In [13]: names = ['tom','mike','jerry','Jean']
In [14]: names
Out[14]: ['tom', 'mike', 'jerry', 'Jean']
In [15]: names.sort(key=str.lower) 按小写排序
In [16]: names
Out[16]: ['Jean', 'jerry', 'mike', 'tom']
In [17]: names.sort(key=str.upper)
In [18]: names
Out[18]: ['Jean', 'jerry', 'mike', 'tom'] 可见无大小写的区别,都按ASCII码排序。
import random
li = list(range(10))
print(li)
random.shuffle(li) 打乱li列表
print(li)
每次都不同。
练习:
- 添加用户:
1). 判断用户是否存在?
2). 如果存在, 报错;
3). 如果不存在,添加用户名和密码分别到列表中;- 删除用户
1). 判断用户名是否存在
2). 如果存在,删除;
3). 如果不存在, 报错;- 用户登陆
- 用户查看
- 通过索引遍历密码
- 退出 “”" “”"
1.系统里面有多个用户,用户的信息目前保存在列表里面
users = [‘root’,‘westos’]
passwd = [‘123’,‘456’]
2.用户登陆(判断用户登陆是否成功
1).判断用户是否存在
2).如果存在
1).判断用户密码是否正确
如果正确,登陆成功,推出循环
如果密码不正确,重新登陆,总共有三次机会登陆
3).如果用户不存在
重新登陆,总共有三次机会
users = ['root','westos']
passwds = ['123','456']
trycount = 0 计数器
while trycount < 3:
inuser = input('Username:')
trycount +=1
if inuser in users:
inpasswd = input('Password:')
index = users.index(inuser) # user.index是找到inuser的对应下标,方便找到对应的密码
passwd = passwds[index]
if inpasswd == passwd:
print('User %s login success.' %inuser)
break
else:
print('%s login failed:Password not correct.' %inuser)
else:
print('User %s not exist.' %inuser)
else:
print('No more chance.')
练习2:
- 后台管理员只有一个用户: admin, 密码: admin
- 当管理员登陆成功后, 可以管理前台会员信息.
- 会员信息管理包含:
添加会员信息
删除会员信息
查看会员信息
退出目录
print('管理员登陆'.center(50,'*'))
inuser = input('Username:')
inpasswd = input('Password:')
users = ['root', 'westos']
passwds = ['123', '456']
if inuser == 'admin' and inpasswd == 'admin':
print('管理员登陆成功')
print('会员信息管理'.center(50,'*'))
print("""
目录:
1.添加会员信息
2.删除会员信息
3.查看会员信息
4.退出
""")
while True:
choice = input('Please input your choice:')
if choice == '1':
print('添加会员信息'.center(50,'*'))
newuser = input('Newuser Name:')
if newuser in users:
print('%s user is aready exist.')
else:
newpass = input('Newuser passwd:')
users.append(newuser)
passwds.append(newpass)
print('添加会员%ssuccess' %newuser)
elif choice == '2':
print('删除会员信息'.center(50,'*'))
deluser = input('Delete user:')
delIndex = users.index(deluser)
if deluser not in users:
print('User%s not exist')
else:
users.remove(deluser)
passwds.pop(delIndex)
print('删除会员信息 %ssuccess' %deluser)
elif choice == '3':
print('查看会员信息'.center(50,'*'))
print('\t会员名\t密码')
usercount = len(users)
for i in range(usercount):
print('\t%s\t%s' %(users[i],passwds[i]))
elif choice == '4':
exit()
else:
print('Plesae check your input')
else:
print('Login failed')
练习三:
“”"
栈的工作原理
入栈 append
出栈 pop
栈顶元素 # 栈为先进后出,所以栈顶元素为最后一个进去的
栈的长度 len
栈是否为空 len == 0
“”"
info = """
栈的工作原理
1.入栈 append
2.出栈 pop
3.栈顶元素
4.栈的长度 len
5.栈是否为空 len == 0
"""
print(info)
stack = []
while True:
choice = input('your choice:')
if choice == '1':
item = input('please input item:')
stack.append(item)
print('%s 入栈 success' %item)
elif choice == '2':
if not stack:
print('栈为空')
else:
item = stack.pop()
print('%s 出栈 success' %item)
elif choice == '3':
if len(stack) == 0:
print('栈为空')
else:
print('栈顶元素 is %s' %stack[-1]) #zuihouyige
elif choice == '4':
print('栈的长度 is %s' %(len(stack)))
elif choice == '5':
if len(stack) == 0:
print('栈为空')
else:
print('栈 not 为空')
elif choice == 'q':
print('logout')
break
else:
print('please check your input')
效果: