【python基礎】python基礎3+4(列表,元組字符串,字典)

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章