字符串
1.字符串的定义:
a = 'westos'
b = "what's"
c = """
用户管理系统
1.添加用户
2.删除用户
3.显示用户
....
"""
print(a)
print(b)
print(c)
【29】
2.字符串的特性:
s = 'hello' # 索引:0 1 2 3 4 索引从0开始
print(s[0])
print(s[1])
# 拿出最后 一个字符
print(s[4])
print(s[-1])
# s[start:stop:step] 从satrt开始到end -1结束
# 步长为step
print(s[0:3])
print(s[0:4:2])
【30】
# 显示所有的字符
print(s[:])
# 显示前3个字符
print(s[:3])
# 字符串的反转
print(s[::-1])
【31】
# 除了第一个字符之外的其他全部字符
print(s[1:])
# 重复
print(s * 10)
# 连接
print('hello ' + 'python')
【32】
# 成员操作符
print('he' in s)
print('aa' in s)
print('he' not in s)
# for循环遍历
for i in s:
print(i)
【33】
3.字符串的常用方法
>>> 'hello'.istitle()
False
>>> 'hello'.isupper()
False
>>> 'Hello'.isupper()
False
>>> 'HELLO'.isupper()
True
>>> 'hello'.islower()
True
>>> 'Hello'.islower()
False
>>> a = 'Hello'.lower()
>>> a
'hello'
>>> a = 'Hello'.upper()
>>> a
'HELLO'
>>> a = 'Hello'.title()
>>> a
'Hello'
>>>
【34】
e.g.
filename = 'hello.loggg'
if filename.endswith('.log'):
print(filename)
else:
print('error.file')
url = 'https://172.25.254.250/index.html'
if url.startswith('http://'):
print('爬取内容~~')
else:
print('不能爬取~~')
【35】
4.字符串的判断
[[:digit:]] [[:alpha:]]
e.g.只要有一个元素不满足,就返回False
print('weeeqwe32131'.isdigit())
print('42131321fsas'.isalpha())
print('weewqeq323213'.isalnum())
【36】
e.g.变量名定义是否合法:
1.变量名可以由字母 数字 下划线组成
2.变量名只能以字母或者下划线开头
s = ‘321csv_’ s[0] s[1:]
s = ‘asfasf%%’
‘_’
exit
while True:
s = input('变量名:')
if s == 'exit':
print('exit')
break
if s[0].isalpha() or s[0] == '_':
for i in s[1:]:
if not (i.isalnum() or i == '_'):
print('%s变量名不合法' %(s))
break
else:
print('%s变量名合法' %(s))
else:
print('%s变量名不合法' %(s))
【37】
5.字符串的对齐
print('学生管理系统'.center(30))
print('学生管理系统'.center(30,'@'))
print('学生管理系统'.center(30,'&'))
print('学生管理系统'.ljust(30,'#'))
print('学生管理系统'.rjust(30,'#'))
【38】
6.字符串的替换
e.g.
s = 'hello world hello'
# find 找到子字符串,并返回最小的索引
print(s.find('hello'))
print(s.find('world'))
print(s.find('hello'))
# 替换字符串中的hello为redhat
print(s.replace('hello','redhat'))
【39】
7.字符串的统计
e.g.
print('hello'.count('l'))
print('hello'.count('ll'))
print(len('wfqfqfqfq'))
【40】
8.字符串的分离和连接
s = '172.25.254.250'
s1 = s.split('.')
print(s1)
print(s1[::-1])
date = '2019-8-28'
date1 = date.split('-')
print(date1)
# 连接 通过指定的连接符号 连接每个字符
print(''.join(date1))
print('/'.join(date1))
print('~~'.join('hello'))
【41】
e.g.字符串的练习
小米笔试编程题目
- 题目描述:
> 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,
单词用空格分割, 单词之间只有一个空格,前>后没有空格。
比如: (1) “hello xiao mi”-> “mi xiao hello”
- 输入描述:
> 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)
- 输出描述:
> 对于每个测试示例,要求输出句子中单词反转后形成的句子
示例1:
输入
hello xiao mi
输出
mi xiao hello
print(' '.join(input().split()[::-1]))
【42】
列表
1.列表的创建
数组:存储同一种数据类型的集合 scores = [34,56,90,100..]
列表(打了激素的数组):可以存储任意数据类型
list = [1,1.2,True,'westos']
print(list,type(list))
# 列表里面也可以嵌套列表
list2 = [1,1.2,True,'westos',[1,2,3,4]]
print(list2,type(list2))
【43】
2.列表的特性
service = ['http','ftp','ssh']
# 索引
# 正向索引
print(service[0])
# 反向索引
print(service[-1])
# 切片
print(service[::-1])
print(service[1:])
print(service[:-1])
# 重复
print(service * 3)
# 连接
service1 = ['mysql','firewalld']
print(service + service1)
# 成员操作符
print('firewalld' in service)
print('ftp' not in service1)
【44】
e.g.假定有下面这样的列表:
names = ['fentiao', 'fendai', 'fensi', 'apple']
输出结果为:'I have fentiao, fendai, fensi and apple.'
names = ['fentiao', 'fendai', 'fensi', 'apple']
print('I have ' + ','.join(names[:-1]) + ' and ' + names[-1])
【45】
e.g.输入某年某月某日(yyyy-MM-dd)
,判断这一天是这一年的第几天?
cal = input('请输入日期 yyyy-MM-dd: ')
date = cal.split('-') #拆分日期
#print(date)
year = int(date[0])
month = int(date[1])
day = int(date[2])
arr = [0,31,28,31,30,31,30,31,31,30,31,30,31]
num = 0
if ((year % 4 ==0) and (year % 100 !=0) or (year % 400 ==0)):
arr[2] = 29
for i in range(1,len(arr)):
if month > i:
num += arr[i]
else:
num += day
break
print('天数:',num)
【46】
3.列表元素的增加
service = ['http','ftp','ssh']
# append():追加一个元素到列表
service.append('firewalld')
print(service)
# extend():拉伸 追加多个元素到列表
service.extend(['mysql','nfs'])
print(service)
# insert():在指定索引处插入元素
service.insert(1,'https')
print(service)
【47】
4.列表元素的删除
>>> service = ['http','ftp','ssh']
>>> service.pop()
'ssh'
>>> service
['http', 'ftp']
>>> service.pop()
'ftp'
>>> service
['http']
>>> service = ['http','ftp','ssh']
>>> service.pop(0)
'http'
>>> service
['ftp', 'ssh']
>>> a = service.pop()
>>> a
'ssh'
>>>
【48】
# remove():删除列表元素
service = ['http','ftp','ssh']
service.remove('ftp')
print(service)
# print(a)
# 从内存种删除一个元素
del service[1]
print(service)
【49】
5.列表的查看
service = ['http','samba','nfs','iscsi','http']
# 查看出现的次数
print(service.count('http'))
# 查看指定元素的索引值(可以指定索引范围)
print(service.index('nfs'))
print(service.index('http'))
print(service.index('http',2,5))
【50】
6.列表的修改
service = ['http','samba','nfs']
# 通过索引,重新赋值
service [0] = 'mysql'
print(service)
# 索引 切片 重复 连接 成员操作符 可迭代
# 通过切片
print(service[:2])
service[:2] = ['firewalld','iscsi']
print(service[:2])
【51】
7.列表的排序
import random
# 按照ASCII码排序
service = ['http','samba','nfs','iscsi','http']
service.sort()
print(service)
li = list(range(10))
print(li)
random.shuffle(li) # 打乱
print(li)
【52】
e.g.用户管理的实现
1.后台管理员用户:admin,密码:westos
2.管理员登录后,可管理用户信息
3.用户信息包括:添加用户信息,删除用户信息,查看用户信息,退出
4.初始化用户信息:
users = ['root','redhat']
passwd = ['123','456']
print('管理员登录'.center(50,'*'))
aduser = input('Username: ')
adpasswd = input('Password: ')
#系统用户信息
users = ['root','redhat']
passwd = ['123','456']
if aduser == 'admin' and adpasswd == 'westos':
print('管理员登录成功!')
print('用户登录'.center(50, '*'))
while True:
print("""
菜单
1.添加用户信息
2.删除用户信息
3.查看用户信息
4.退出
""")
choice = input('请输入你的选择: ')
if choice == '1':
print('添加用户信息'.center(50,'*'))
adduser = input('添加用户名: ')
if adduser in users:
# print('用户%s已经存在' %adduser)
print(f"用户{adduser}已经存在")
else:
addpasswd = input('密码: ')
users.append(adduser)
passwd.append(addpasswd)
print(f"用户{adduser}添加成功")
elif choice == '2':
print('删除用户信息'.center(50, '*'))
deluser = input('删除用户名: ')
if deluser in users:
delindex = users.index(deluser)
users.remove(deluser)
passwd.pop(delindex)
print(f"删除用户{deluser}成功")
else:
print(f"用户{deluser}不存在")
elif choice == '3':
print('查看用户信息'.center(50, '*'))
print('\t用户名\t密码')
userlenth = len(users)
for i in range(userlenth):
print('\t%s\t%s' %(users[i],passwd[i]))
elif choice == '4':
exit()
else:
print('请输入正确的选择!')
else:
print('管理员登录失败!')
【53】
e.g.栈的实现
1.入栈
2.出栈
3.栈顶元素
4.栈的长度
5.栈是否为空
stack = []
print('栈的实现'.center(50,'*'))
while True:
print("""
菜单
1.入栈 2.出栈 3.栈顶元素
4.栈长 5.栈是否为空 6.退出
""")
choice = int(input('请输入功能选项:'))
if choice == 1:
print('当前栈为:%s' %stack)
addele = str(input('请输入入栈元素:'))
stack.append(addele)
print(f"元素{addele}已入栈!")
elif choice == 2:
print('当前栈为:%s' %stack)
if len(stack) == 0:
print('栈空!不能执行出栈操作!')
else:
delele = stack[-1]
stack.pop()
print(f"元素{delele}已出栈!")
print('出栈操作后的新栈为:%s' %stack)
elif choice == 3:
if len(stack) == 0:
print('栈空!无栈顶元素!')
else:
top = stack[-1]
print('当前栈为:%s' %stack)
print('栈顶元素为:%s' %top)
elif choice == 4:
length = len(stack)
print('当前栈为:%s' %stack)
print('栈长为%d' %length)
elif choice == 5:
if len(stack) == 0 :
print('栈空!')
else:
print('当前栈为:%s' %stack)
print('此栈不空!')
elif choice == 6:
print('退出!')
break
else:
print('请输入正确的功能选项!')
【54】
python中常用的内置方法
In [8]: min(2,3,4,5)
Out[8]: 2
In [9]: max(2,3,4,5)
Out[9]: 5
In [10]: sum(range(1,101))
Out[10]: 5050
In [11]: sum(range(1,101,2))
Out[11]: 2500
In [12]: sum(range(2,101,2))
Out[12]: 2550
#枚举:返回索引值和对应的value值
for i,v in enumerate('westos'):
print(i,v)
#zip
s1 = 'abc'
s2 = '123'
for i in zip(s1,s2):
# print(i)
print(' '.join(i))
【55】