1. 程式人生 > >python基礎--字串的常用方法和列表

python基礎--字串的常用方法和列表

字串的常用方法

判斷字串 變成‘標題’

In [1]: 'Hello'.istitle()
Out[1]: True
In [2]: 'hello'.istitle()
Out[2]: False

In [7]: 'heLLo'.islower()	##判斷是否全部為小寫
Out[7]: False
In [8]: 'heLLo'.isupper()	##判斷是否全部是大寫
Out[8]: False

將字串全部變為大寫

In [3]: 'hello'.upper()
Out[3]: 'HELLO'

將字串全部變為小寫

In [4]: 'heLLo'.lower()
Out[4]: 'hello'

In [5]: 'heLLo'.title()       ###變成標題
Out[5]: 'Hello'

In [6]: 'heLLo'.swapcase()			##大小寫互相轉換
Out[6]: 'HEllO'



"""
[[:digit:]] [[:alnum:]]
[[:upper:]] [[:lower:]]
[[:space:]]
"""

字串的判斷 練習

變數名是否合法?
1.變數名可以由字母,數字或下劃線組成
2.變數名只能以字母或下劃線開頭

1.判斷變數名的第一個元素是否為字母或下劃線: s[0]
2.如果第一個元素符合條件,判斷除了第一個元素的其他元素:s[1:]

for迴圈:依次遍歷字串的每一個元素

for i in 'hello':
	if i.isalpha():
	print(i)

1.變數名的第一個字元是否為字母或下劃線
2.如果是,繼續判斷(4)
3.如果不是,報錯,不合法
4.依次判斷除了第一個字元之外的其他字元
5.判斷這個字元是否為數字或下劃線

while True:
	s = input('變數名:')
	if s == 'exit':
		print('歡迎下次使用')
		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('變數名不合法')

在這裡插入圖片描述

python的一些內建方法

In [1]: min(2,4)
Out[1]: 2

In [2]: max(2,4)
Out[2]: 4

In [3]: sum(range(1,101))
Out[3]: 5050

In [4]: sum(range(2,101,2))
Out[4]: 2550

In [5]: sum(range(1,101,2))
Out[5]: 2500

#列舉:返回索引值和對應的value值
In [8]: for i,v in enumerate('hello'):
   ...:     print(str(i) + '--------->' + v)
   ...:
0--------->h
1--------->e
2--------->l
3--------->l
4--------->o


In [9]: s1 = 'abc'

In [10]: s2 = '123'

zip() 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成一個個元組,然後返回由這些元組組成的列表。

如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 * 號操作符,可以將元組解壓為列表。

 In [11]: for i in zip(s1,s2):
        ...:     print(i)
        ...:
    ('a', '1')
    ('b', '2')
    ('c', '3')
    
In [12]: for i in zip(s1,s2):
    ...:     print(''.join(i))
    ...:
a1
b2
c3

In [13]: for i in zip(s1,s2):
    ...:     print('-'.join(i))
    ...:
a-1
b-2
c-3

列表的建立

列表(打了激素的陣列):可以儲存任意資料型別的集和

li = [1,2.2,True,'hello']
print(li,type(li))

列表裡面是可以巢狀列表的

li = [1,2,3,False,'python',[1,2,3,4,5]]
print(li,type(li))

import random
li = list(range(10))
random.shuffle(li)     ###shuffle方法將列表隨即排序
print(li)

列表的特性

listname = [‘http’, ‘ssh’, ‘ftp’]

索引

正向索引

print(listname[0])

反向索引

print(listname[-1])

切片
列表的反轉

print(listname[::-1])

輸出除了第一個之外的所有元素

print(listname[1::])

輸出除了最後一個元素之外的所有元素

print(listname[:-1])

重複

print(listname * 3)

連線

listname2 = ['80','22','21']

print(listname + listname2)

成員操作符

print('80' in listname)

print('ftp' in listname)

列表裡面巢狀列表

listname3=[['htp',80],['ssh',22],['http',80]]

索引

print(listname3[0][0])
print(listname3[2][1])

列表練習

輸出i have fentiao,fendai,densi and fish
程式碼 :

 names = ['fentiao','fendai','fensi','fish']
 print('i have ' +','.join(names[:3])+' and ' +names[-1])

在這裡插入圖片描述

根據用於指定月份,列印該月份所屬的季節。
提示: 3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季

month = int(input('Month:'))
if month in [3,4,5]:
    print('春季')
elif month in [6,7,8]:
    print('夏季')
elif month in [9,10,11]:
    print('秋季')
else:
    print('冬季')

在這裡插入圖片描述

列表元素的增加

nbastar=['curry','kobe','durant']
append:追加一個元素到列表的末尾
nbastar.append('james')
print(nbastar)
['curry', 'kobe', 'durant', 'james']

#extend:追加多個元素到列表的末尾,用新列表去擴充套件原來的列表

nbastar.extend(['green','klay'])
print(nbastar)
['curry', 'kobe', 'durant', 'james', 'green', 'klay']

#insert:在索引位置插入元素

nbastar.insert(0,'jordan')
print(nbastar)
['jordan', 'curry', 'kobe', 'durant', 'james', 'green', 'klay']

列表元素的刪除

pop:彈出列表中的一個元素,預設是最後一個

nbastar.pop()
print(nbastar)

remove:刪除列表中的元素

nbastar.remove('durant')
print(nbastar)

清空列表中的元素

nbastar.clear()
print(nbastar)

del 從記憶體中刪除列表

del nbastar
print(nbastar)

刪除列表中第一個索引對應的值

del nbastar[1]
print(nbastar)

刪除列表中前兩個元素之外的所有值

del nbastar[2:]
print(nbastar)

列表元素的修改和檢視

nbastar=['curry','kobe','durant']

通過索引,重新賦值

   nbastar[2]='jordan'
    print(nbastar)

通過切片

nbastar[:2]=['james','jordan']
print(nbastar)
nbastar=['curry', 'kobe', 'durant', 'james', 'green', 'klay']

檢視元素出現的次數

print(nbastar.count('curry'))

檢視指定元素的索引值(也可以指定範圍)

print(nbastar.index('james'))
print(nbastar.index('green',4,8))

排序檢視(按照ascii碼值進行排序)

print(nbastar.sort(reverse=True))
print(nbastar)

對字串不區分大小排序

nbastar.sort(key=str.upper)
nbastar.sort(key=str.lower)
print(nbastar)

列表練習–棧

棧的工作原理:先進後出

stack = []
info = """
    1.入棧
    2.出棧
    3.棧頂元素
    4.棧的長度
    5.棧是否為空
"""

while True:
    print(info)
    choice = input('請輸入要進行操作的數字:')
    if choice == '1':
        num = input('請輸入要加入的元素:')
        stack.append(num)
        print('%s元素加入成功' %num)
    elif choice == '2':
        if len(stack) == 0 :
            print('棧為空,不能出棧')
        else:
            num = stack.pop()
            print('%s出棧成功' %num)
    elif choice == '3':
        if not stack:
            print('棧為空,沒有棧頂元素')
        else:
            print('棧頂元素為%s' %(stack[-1]))
    elif choice == '4':
        print(len(stack))
    elif choice == '5':
        if len(stack)==0:
            print('棧為空')
        else:
            print('棧不為空')
    elif choice == 'q':
        print('退出!')
        break
    else:
        print('請輸入正確數字')

在這裡插入圖片描述

列表練習–佇列

佇列的工作原理:先進先出

"""
queue = []
info = """
    1.入隊
    2.出隊
    3.隊頭
    4.隊尾
    5.佇列是否為空
"""
while True:
    print(info)
    option = input('請輸入要操作的數字:')
    if option == '1':
        num = input('請輸入入隊的元素:')
        queue.append(num)
        print('%s元素入隊成功' % num)
    elif option == '2':
        if not queue:
            print('佇列為空,不能出隊')
        else:
            num = queue.pop(0)
            print('%s出隊成功' %num)
    elif option == '3':
        if len(queue)==0:
            print('佇列為空,沒有隊首元素')
        else:
            print('隊頭元素為%s' %(queue[0]))
    elif option == '4':
        if len(queue)==0:
            print('佇列為空,沒有隊尾元素')
        else:
            li = len(queue)
            print('隊尾元素為%s' %queue[li-1])
    elif option == '5':
        if len(queue)==0:
            print('佇列為空')
        else:
            print('佇列不為空')
    elif option == 'q':
        print('退出')
    else:
        print('請輸入正確的數字')

在這裡插入圖片描述

列表練習–登陸程式

使用者有三次嘗試登陸的機會,使用者名稱和密碼分別儲存在兩個列表裡,一一對應

users = ['user1', 'user2']
passwds = ['westos', 'redhat']
a = 0
while a < 3:
    inuser = input('請輸入使用者名稱:')
    inpasswd = input('請輸入密碼:')
    a += 1
    if inuser in users:
        index = users.index(inuser)
        passwd = passwds[index]
        if passwd == inpasswd:
            print('登入成功')
            break
        else:
            print('登入失敗,密碼錯誤,你還有%s次機會' % (3 - a))
    else:
        print('使用者不存在')
else:
    print('你的機會用完了!')

在這裡插入圖片描述

列表練習–管理員登陸程式

要求:
1.後臺管理員只有一個使用者:admin,密碼:admin
2.當管理員登入成功後,可以管理前臺使用者資訊
3.會員資訊管理包括:
1.新增會員資訊
2.刪除會員資訊
3.檢視會員資訊
4.退出
“”"

print('管理員登入'.center(50,'*'))
inuser = input('使用者名稱:')
inpasswd = input('密碼:')

users = ['user1','user2']
passwds = ['123','456']
info="""
     操作目錄
    1.新增會員資訊
    2.刪除會員資訊
    3.檢視會員資訊
    4.退出
"""
if inuser == 'admin' and inpasswd == 'admin':
    print('登入管理介面成功'.center(50,'*'))
    print(info)
    while True:
        option = input('請輸入要進行的操作:')
        if option == '1':
            print('新增會員資訊:'.center(50,'*'))
            adduser = input('新增的會員名:')
            if adduser in users:
                print('會員名已經存在!')
            else:
                addpasswd = input('密碼:')
                users.append(adduser)
                passwds.append(addpasswd)
                print('會員%s新增成功' %adduser)
        elif option == '2':
            print('刪除會員資訊:'.center(50, '*'))
            deluser = input('請輸入要刪除的會員名:')
            if deluser not in users:
                print('沒有此會員!!')
            else:
                deluserindex=users.index(deluser)
                users.remove(deluserindex)
                passwds.pop(deluserindex)
                print('會員%s刪除成功' %deluser)
        elif option == '3':
            print('檢視會員資訊:'.center(50, '*'))
            print('\t會員名\t密碼')
            usercount = len(users)
            for i in range(len(users)):
                print('\t%s\t%s' %(users[i],passwds[i]))
        elif option == '4':
            print('退出!')
        else:
            break
            print('請輸入正確的數字操作!')
else:
    print('管理員登入失敗!')

在這裡插入圖片描述

center方法實現列印菱形

n = int(input('請輸入:'))
for i in range(1, n,2):
    print(('*' * i).center(3 * n))
for i in range(n, 0, -2):
    print(('*' * i).center(3 * n))

在這裡插入圖片描述