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))