一.python基礎3 【列表】
1.1布爾值和控制
布爾值分爲True和False
空值是None,不可以當成0
1.2列表
'''列表'''
list=[]
#列表組合
list1=[1,2,3]
list2=[4,5,6]
list3=list1+list2
print(list3)
#列表重複
print(list1*3)
#判斷是否在列表裏面
print(3 in list1)
#列表截取
list4 = [0,1,2,3,4,5,6]
#輸出不包括m[n,m]
print(list4[2:4])
#包括m[::m]
print(list4[3::])
print(list4[::4])
'''列表方法'''
#append 在列表末尾添加一個新元素
list5 = [0,1,2,3]
list5.append(6)
print(list5)
#extend 在列表末尾添加另一個列表
list6 = [0,1,2,3]
list6.extend([5,6,7])
print(list6)
#在下標處追加元素,其餘後移
list7 = [0,1,2,3,4]
list7.insert(3,9)
list7.insert(3,[100,200])
print(list7)
#移除指定下標的元素,默認最後一個,並返回刪除的數據
list8 = [0,1,2,3,4]
list8.pop()
print(list8)
#移除從左往右元素值,第一個移除
list9 = [9,8,7,6,7,5]
list9.remove(7)
print(list9)
#刪除列表中所有該元素
num1 = list9.count(7)
num2 = 0
while num2 < num1:
list9.remove(7)
num2 += 1
print(list9)
#移除列表中所有元素
list10 = [9,8,7,6,7,5]
list10.clear()
print(list10)
#返回該元素的第一個索引值
list11 = [9,8,7,6,7,5]
print(list11.index(7))
#len 列表個數
list11 = [9,8,7,6,7,5]
print(len(list11))
#max 列表最大值
list11 = [9,8,7,6,7,5]
print(max(list11))
#min 列表最小值
list11 = [9,8,7,6,7,5]
print(min(list11))
#count 查看元素在列表中出現的次數
list12 = [9,8,7,6,7,5,9,8,7,6,7,5,9,8,7,6,7,5]
print(list12.count(9))
count1 = 0
for i in range(len(list12)):
if list12[i] == 9:
count1 = count1+1
print(count1)
# 逆序
list13 = [0,1,2,3,4,5]
list13.reverse()
print(list13)
list14 =[]
n = len(list13)
for i in range(n):
list14.append(list13[n-1-i])
print(list14)
#排序
list15 = [4,7,2,9,6,3,4,7,1]
list15.sort()
print(list15)
內存分類
棧區:系統自動分類,程序結束自動釋放內存空間
堆區:程序員手動開闢,手動釋放
'''拷貝'''
#淺拷貝 不同的變量名指向同一個內存空間,改變的時候會改變
list1 = [0,1,2,3,4]
list2 = list1
list2[3] =200
print(list1)
print(list2)
print(id(list1))
print(id(list2))
#深拷貝 另外開闢一個內存空間
list3 = [0,1,2,3,4]
list4 = list3.copy()
list4[3] =200
print(list3)
print(list4)
print(id(list3))
print(id(list4))
1.3條件控制語句
'''
死循環
表達式永遠爲真的循環
while 1:
print("Hello World")
'''
'''for語句'''
for 變量名 in 集合:
語句
'''range()函數 列表生成器
range([start],end,[step])
'''
#start 默認爲0,end不包括,step默認爲1
for i in range(2,100,2):
print(i)
for i in range(100,2,-2):
print(i)
'''enumerate()枚舉遍歷器'''
#遍歷下標和列表元素
for index,m in enumerate([1,2,3,4,5]):
print(m,index)
'''braak語句'''
#跳出for和while語句
#只跳出最近的循環
'''continue()'''
#跳過當前循環中剩餘語句,繼續下一次循環
二.練習題
2.1找出列表中第二大的數
'''直接找,使用remove()'''
list1 = [2,6,3,8,9,4,9]
m1 = max(list1)
#去除列表中第一大的數
count = list1.count(m1)
num = 0
if count == 1:
list1.remove(m1)
else:
num = 0
while num < count:
list1.remove(m1)
num += 1
m2 = max(list1)
print(m2)
'''先排序,使用pop()'''
list1 = [2,6,2,5,1,4,0,6]
list1.sort()
m1=max(list1)
# 去除列表中最大的值
count = list1.count(m1)
num = 0
if count == 1:
list1.pop()
else:
num = 0
while num < count:
list1.pop()
num += 1
m2 = max(list1)
print(m2)
2.2打印九九乘法表
for i in range(1,10):
for j in range(1,10):
print(i,"*",j,"=",i*j)
2.3輸入兩個數,求這兩個數的最大公約數
解題思路:從數學來看
輾轉相除法:取兩個數中最大的數做除數,較小的數做被除數,用最大的數除較小數,如果餘數爲0,則較小數爲這兩個數的最大公約數,如果餘數不爲0,用較小數除上一步計算出的餘數,直到餘數爲0,則這兩個數的最大公約數爲上一步的餘數。
相減法:取兩個數中的最大的數做減數,較小的數做被減數,用最大的數減去小數,如果結果爲0,則被減數就是這兩個數的最大公約數,如果結果不爲0,則繼續用這兩個數中最大的數減較小的數,直到結果爲0,則最大公約數爲被減數。
#返回大值
def max1(a,b):
if a > b:
return a
else:
return b
#返回小值
def min1(a,b):
if a > b:
return b
else:
return a
'''輾轉相除法'''
def diviser1(a,b):
min = min1(a,b)
max = max1(a,b)
c = max % min
#c爲餘數
while c!=0:
max,min = min,c
c = max % min
if c == 0:
print("最大公約數爲",min)
'''相減法'''
def diviser2(a,b):
max = max1(a,b)
min = min1(a,b)
c = max - min
while c != 0:
max, min = min, c
c = max - min
if c == 0:
print("最大公約數爲",min)
a = int(input("輸入第一個數:"))
b = int(input("輸入第二個數:"))
choice = int(input("選擇輾轉相除法,輸入1,選擇相減法,輸入2:"))
if choice == 1:
diviser1(a,b)
else:
diviser2(a,b)
2.4輸入一個字符串,將字符串的大寫轉小寫,小寫轉大寫
解題思路:
小寫字母轉換成ascii碼後-32,得到的就是其對應的大寫字母
同理,大寫字母+32,得到的就是其對應的小寫字母
'''字符串大小寫轉換
ord()函數,返回ASCII碼
chr() 函數,返回字符
'''
def chage(c):
if ord(c) > 90:
return chr(ord(c)-32)
else:
return chr(ord(c)+32)
#str = str(input())
str ="asCD"
strN =" "
for i in str:
strN =strN+chage(i)
print(strN)
2.5隨機生成一個6位數驗證碼
'''隨機生成數字,字母,大小寫'''
import random
#隨機生成數字
def num1():
str1 = ""
for i in range(10):
str1 = str1 + str(i)
return random.choice(str1)
#隨機生成大寫字母
def alph1():
alph = ""
for i in range(26):
alph2=ord("A")+i
alph = alph + chr(alph2)
return random.choice(alph)
#隨機生成小寫字母
def alph2():
alph = ""
for i in range(26):
alph2=ord("a")+i
alph = alph + chr(alph2)
return random.choice(alph)
#主函數
def main():
out =""
for i in range(6):
n = random.choice("1,2,3")
if n =="1":
out = out +random.choice(num1())
elif n =="2":
out = out +random.choice(alph1())
else:
out = out +random.choice(alph2())
print(out)
main()
三.【python基礎】4(字符串,元組,字典)
3.1元組
'''元組
'''
#定義元組
tuple1 = (1,2,3,4,5)
print(tuple1)
print(tuple1[2])
#獲取最後一個元素
print(tuple1[-1])
print(tuple1[-2])
#修改元組
#初始化之後就不可修改,元組中的元素,元素內部可變
tuple2=(1,2,3,4,[5,6,7])
tuple2[-1][0] = 500
print(tuple2)
#刪除元組
tuple3 =(1,2,3,4,5)
del tuple3
'''元組操作'''
#元組相加,成爲一個新的元組
t4 = (1,2,3)
t5 = (4,5,6)
print(t4 + t5)
#元組重複
print(t4*3)
#元組元素判斷
print(4 in t5)
#元組截取
t6=(1,2,3,4,5,6,7,8,9,0)
print(t6[3:7])
print(t6[3:])
print(t6[:7])
元組的方法
'''元組方法'''
t1 = (1,2,3,4,5,6,7)
#len()
print(len(t1))
#max().min()
print(max(t1))
#列表轉成元組
list = [1,2,3,4]
t2 = tuple(list)
print(t2)
爲什麼用元組:
1.安全,元素內容無法修改
3.2字符串方法
'''字符串方法'''
'''split(str,count)'''
#以str爲分隔符截取字符串,count爲要截取的個數,默認字符串長度
str1 = "1**2**3****4****5"
#如果字符串中分割符過多
list1 = str1.split("*")
count = 0
for i in list1:
if len(i) > 0:
count +=1
print(count)
'''splitlines()按照(\r,\n分割)'''
str2 = '''Ben is a good boy
Ben is a better boy
Ben is a best boy
'''
print(str2.splitlines())
'''join()組合成字符串'''
#以指定字符串組合列表元組
list3 = ['Ben','is','a','boy']
str3 =" ".join(list3)
print(str3)
#max() min()按照ASCII碼比較
'''replace(old,new,num)'''
#替換字符串,num替換的個數
str4 = "Ben is a good good good boy"
str5 = str4.replace("good","nice",1)
print(str5)
#字符串的映射表
t6 = str.maketrans("aco","659")
#a->6,c->5_
str7 = "Ben is a good boy"
str8 = str7.translate(t6)
print(str8)
#startswith(str,start,end)
#字符串以str開頭
str9 = "Ben is a good boy"
print(str9.startswith("B",5,10))
#endswith(str,start,end)
#字符串以s結束
str9 = "Ben is a good boy"
print(str9.endswith("boy"))
#isalpha(),至少一個字符,且所有都爲字母
str10 ="Benisagoodboy"
print(str10.isalpha())
#isalnum(),至少一個字符,且所有都爲字母或數字
str11 ="Benisagoodboy7964"
print(str11.isalnum())
#isupper(),至少一個字符,且所有都大寫
str11 ="ABCd"
print(str11.isupper())
#islower(),至少一個字符,且所有都大寫
str12 ="abcd"
print(str12.islower())
#istitle()標題化
str13 ="Ben Hello "
print(str13.istitle())
#isdigit()只包含數字
str14 ="234466"
print(str14.isdigit())
#isnumeric只包含數字
print("123abc".isnumeric())
print("123".isnumeric())
3.3字典
'''字典
鍵:值-》key:value
字典中key唯一,不可變,不重複
鍵必須不可變,所以可以用數字,字符串或元組充當
'''
#保存多位學生的姓名和成績
dict1={"Mark":60,"Lilei":80}
#元素訪問
print(dict1["Mark"])
#元素修改
dict1["Mark"] = 70
print(dict1.get("Mark"))
#刪除字典元素
del dict1["Mark"]
# 清空
dict1.clear()
# 刪除詞典
del dict1
#添加
dict2={}
dict2["student"] = 150
print(dict2.get("student"))
#不允許同一個鍵出現兩次。
## 創建時如果同一個鍵被賦值兩次,後一個值會被記住
dict3 = {"Name":'Zara',"Age": 7}
dict3["Name"] ="Manni"
print(dict3["Name"])
#遍歷
for key in dict3:
print(key,dict3[key])
#values()
for value in dict3.values():
print(value)
#items()
for k,v in dict3.items():
print(k,v)
#枚舉
for i,v2 in enumerate(dict3):
print(i,v2)