字符串 列表 案例压栈出栈查询

这篇博客介绍了如何使用Python的列表实现栈数据结构,包括压栈、出栈和查询功能。通过示例代码展示了如何定义和操作栈,并提供了交互式的菜单选择操作。
摘要由CSDN通过智能技术生成

第一个按照自己意识写的脚本:

import subprocess
import rand
c=rand.passwd(8)

def name():

while 1:
a=input('请输入用户名: ')
result=subprocess.run(‘id %s &> /dev/null’ % a,shell=True)
if result.returncode==0:
print('用户已经存在,请重新输入用户名: ')
else:
subprocess.run(‘useradd %s’ % a,shell=True)
subprocess.run(‘echo %s | passwd --stdin %s &> /dev/null’ % (c,a),shell=True)
print(‘已创建用户: %s’ % a)
print(‘密码已经生成,密码为8位’)
break
info=""“用户信息:
用户名: %s
密码: %s
“”” % (a,c)
print(info)
d=input('请输入你要保存用户信息到哪个文件夹: ')
with open(d,‘w’) as obj:
f1=obj.write(info)
with open(d,‘r’) as to:
data=to.read()
# print(data)

print(subprocess.run(‘cat d’,shell=True))

f1=(subprocess.run(‘cat d’,shell=True))

f1=open(d)

data=d.read()

print(data)

if name == ‘main’:
print(‘用户名: %s’ % a)
print(‘密码是: %s’ % c)
print(‘用户信息:%s’ % data)

enumrate() 函数返回由序列对象的下标和值构成的元祖对象

nums=[23,34,56,67,89,24,46,]
enumerate(nums)
<enumerate object at 0x7f5be07c6340>
list(enumerate(nums))
[(0, 23), (1, 34), (2, 56), (3, 67), (4, 89), (5, 24), (6, 46)]

for data in enumerate(nums):
… print(data)

(0, 23)
(1, 34)
(2, 56)
(3, 67)
(4, 89)

for i,n in enumerate(nums):
… print(i,n)

0 23
1 34
2 56
3 67
4 89
5 24
6 46

9>100
False
‘9’>‘100’
True
ord(‘9’)
57
ord(‘1’)
49
#ord二进制,0忽略

字符串:
属于标量,不可变,顺序类型
比较大小时,按顺序比较

字符串格式化:
%c 转换成字符串
%s 优先用str() 函数进行字符串转换
%d/%i 转成有符号十进制数
%o 转成无符号八进制数
%e/%E 转成科学计数法
%f/%F 转成浮点数

%s
%d
%f
%%
% 一个参数省略 ()

字符串格式化:
#基础格式: 用元祖中的内容替换字符串中的占位符
如果元祖中的内容只有一项,括号可以省略
‘’ % ()

原始字符串,真实字符串

win_path=‘c:\temp\newdir’
print(win_path)
c: emp
ewdir

print会将\t 转成tab,\n转成回车

wpath=r’c:\temp\newdir’
print(wpath)
c:\temp\newdir

字符串前加r,表示字符串中的每项内容都是它字面含义
wpath
‘c:\temp\newdir’

案例3: 格式化输出
1:提示用户输入(多行)数据
2 : 假定屏幕的宽度为50,用户输入的多行数据如下显示(文本内容居中)

‘hello world’.center(48)
’ hello world

字符串方法:
‘abc’.upper()
‘ABC’

	def isdigit(s):
#接受一个字符串,如果全部是数字返回True,否则返回False
for ch in s:
    if ch not in '0123456789':
        return False       #遇到return提前结束函数
return True

if name == ‘main’:
s1=input(‘字符串’)
if isdigit(s1):
print('输入的全部是数字: ')
else:
print('输入内容不全是数字: ')

‘123a456’.isdigit()
False
‘123456’.isdigit()
True

s1=input(‘字符串’)
if s1.isdigit():
print('输入的全部是数字: ')
else:
print('输入内容不全是数字: ')

hi.strip() #取出两端空白符
‘hello world’

hi.lstrip #取出左侧空白
hi.rstrip #取出右侧空白

‘hello world’.center(50,’*’)
hello world*’

‘hello world’.ljust #左对齐

‘hello world’.rjust #右对齐

‘hello world’.upper #转大写
‘hello world’.lower() #转小写
‘ni hao’.replace(‘ni’,‘ta’) #替代

‘python-is-cool’.split(’-’)
[‘python’, ‘is’, ‘cool’] #切割

‘python’.isupper()
False
‘python’.islower()
True

列表方法:
l1.append(80) #追加元素
l1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 80]
l1.insert(0,20) #在下标为0的位置插入20
l1
[20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 80]

l1.extend([10,20,30]) #列表尾部增加3项
l1
[20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 80, 10, 20, 30]

l1.append([10,20,30]) #向列表尾部增加一项
l1
[20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 80, 10, 20, 30, [10, 20, 30]]

l1.pop()
[10, 20, 30]
l1
[20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 80, 10, 20, 30]
#默认将列表最后一项弹出

l1.index(80) #查找下标位置
11
l1.pop(11) #弹出下标为80的
80
l1
[20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30]

l1.remove(20)
l1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30] #删除第一个

for i,num in enumerate(l1):
… if num==20:
… l1.pop(i)

l1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 30]

for i in l1:
… if i==20:
… l1.remove(i)

l1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 30]
l1.append(20)
l1.insert(0,20)
l1
[20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 30, 20]
for i in range(l1.count(20)):
… l1.remove(20)

l1=[num for num in l1 if num!=20]
l1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 30]

l1.sort() #升序排列
l1.reverse() #原位翻转

l1.sort()
print(l1.sort())
None
#print 要有return返回值

l1.reverse()
l1
[30, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

while 80 in l2:
… l2.remove(80)

l2
[30, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

l2=l1 #指向同一个内存空间,删除所有的80

l3=l1.copy() #将l1的内容赋值给l3
l1.clear() #l1的内容清空
l3
[30, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0] #l3并没有清空

元祖:
t1 = (10,20,30,20,100)
t1.count(10)
1
t1.index(10)
0

单元素元祖必须在最后有一个逗号,
type(10,)
<class ‘int’>
t3=(10,)
type(t3)
<class ‘tuple’>
长度为一的单元素元祖

案例1: 用列表构建栈结构

1: 栈是一个后进先出的结构
2: 编写一个程序,用列表实现栈结构
3: 需要支持压栈,出栈,查询功能

1:发呆,思考程序的运行方式
2:编写功能函数

def push():
print(push)

def pop():
print(pop)

def view():
print(view)

def show_menu():
a="""
(0): 压栈
(1): 出栈
(2): 查询
(3): 退出
请选择(0/1/2/3): “”"

while 1:
    b=input(a).strip()    #去掉字符串两端的空格
    if b not in ['0','1','2','3']:
        print('无效的输入,请重试')
        continue

    if b=='3':
        print('bye-bye')
        break
    if b=='0':
        push()
    elif b=='1':
        pop()
    else:
        view()

if name == ‘main’:
show_menu()

stack=[]
def push(): #实现压栈功能
data=input(‘数据: ‘).strip()
if data: #如果data非空
stack.append(data)
else:
print(’\033【31;1m请输入非空字符: \033[0m’)

def pop(): #用于实现出栈功能
if stack:
print(‘从栈中,弹出了:\033[34;1m %s\033[0m’ % stack.pop())
else:
print(’\033[31;1m空栈\033[0m’)

def view():
print(’\033[32;1m%s\033[0m’ % stack)
def show_menu():
a="""
(0): 压栈
(1): 出栈
(2): 查询
(3): 退出
请选择(0/1/2/3): “”"

while 1:
    b=input(a).strip()    #去掉字符串两端的空格
    if b not in ['0','1','2','3']:
        print('\033[31;1m无效的输入,请重试\033[0m')
        continue

    if b=='3':
        print('bye-bye')
        break
    if b=='0':
        push()
    elif b=='1':
        pop()
    else:
        view()

if name == ‘main’:
show_menu()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值