python其餘知識目錄html
若有變量 googs = ['汽車','飛機','火箭'] 提示用戶可供選擇的商品:python
0,汽車
1,飛機
2,火箭
用戶輸入索引後,將指定商品的內容拼接打印,如:用戶輸入0,則打印 您選擇的商品是汽車。git
goods=["汽車","飛機","大炮"] for i in range(0,len(goods)): print(i,goods[i]) num=input("請輸入要選擇的商品序號:") num=int(num) text="您選擇的產品是:%s"%(goods[num]) print(text) -------------結果: 0 汽車 1 飛機 2 大炮 請輸入要選擇的商品序號:0 您選擇的產品是:汽車
變形:
1,汽車
2,飛機
3,火箭
用戶輸入索引後,將指定商品的內容拼接打印,如:用戶輸入1,則打印 您選擇的商品是汽車程序員
goods=["汽車","飛機","大炮"] for i in range(0,len(goods)): #索引是從0開始 print(i+1,goods[i]) #用戶看的數字,索引+1顯示 num=input("請輸入要選擇的商品序號:") #用戶輸入的是看的數字,作索引要-1 num=int(num)-1 text="您選擇的產品是:%s"%(goods[num]) print(text) ------------結果: 1 汽車 2 飛機 3 大炮 請輸入要選擇的商品序號:1 您選擇的產品是:汽車
不改變原代碼,插入一個數字實現的思想web
goods=["汽車","飛機","大炮"] goods.insert(0,"0") #列表前面插入一個字符 for i in range(1,len(goods)): #索引從1開始 print(i,goods[i]) num=input("請輸入要選擇的商品序號:") num=int(num) text="您選擇的產品是:%s"%(goods[num]) print(text) ----------------結果: 1 汽車 2 飛機 3 大炮 請輸入要選擇的商品序號:1 您選擇的產品是:汽車
v1=1 v2=(1) v3=(1,) v4=() print(type(v1),type(2),type(v3),type(v4)) ------------結果: <class 'int'> <class 'int'> <class 'tuple'> <class 'tuple'> # 元組記得加逗號。小括號是元組,小括號只有一個數是數字,小括號一個數字加個逗號纔是元組。 [(1),(2),(3)]等價於[1,2,3],
int
py2/py3
除法
強制轉換:
int('字符串') 【重要】
int(布爾值)
bool
強制轉換:
bool(整數) -> bool(1)/.. -> bool(0)
bool(字符串) -> bool('xx') --> bool("")
bool(列表) -> bool([]) --> bool([])
bool(元組) -> bool(()) --> bool(空元組)
v1 = bool(0)
v2 = bool("")
v3 = bool([])
v4 = bool(())
print(v1,v2,v3,v4) # False
str
獨有功能:upper/lower/split/strip/replace/isdigit/startswith/endswith/format/join/encode
公共公共:
len
索引
切片
步長
for循環
刪除【無】
更新【無】
強制轉換:
str(999) # "999"
str(True) # "True"
str(["唐開發",'李忠偉']) # "["唐開發",'李忠偉']" --> v2 = "".join(["唐開發",'李忠偉'])
str(["唐開發",'李忠偉'])
list
獨有功能:append/insert/pop/remove/clear/ extend
公共功能:
len
索引
切片
步長
for循環
刪除
更新
強制轉換:
list("asdfadfasfdadfasfd")
v1 = list("asdfadfasfdadfasfd")
print(v1)
list( (11,22,33,44,) )
v1 = list( (11,22,33,44,) )
print(v1)
tuple
獨有功能【無】
公共功能:
len
索引
切片
步長
for循環
刪除【無】
更新【無】
強制轉換:
tuple('adfadfasdfasdfasdfafd')
tuple([11,22,33,44])
v1 = list("asdfadfasfdadfasfd")
print(v1)
v1 = list( (11,22,33,44,) )
print(v1)
v1 = tuple('adfadfasdfasdfasdfafd')
print(v1)
總結
常見的類型轉換
# 字符串轉數字
# 數字轉字符串
# 列表轉元組
# 元組轉列表
# 其餘轉bool時,只有:0 「」 [] ()app
li=[" 8 "," 12 "] mcw=li[0]+li[1] mcw2=int(li[0])+int(li[1]) mcw3=int(" 5 ")+int(" 11 ") mcw4=int(" 12 ") print(mcw) print(mcw2,mcw3,mcw4) --------------結果: 8 12 20 16 12
結論:字符類型的數字帶有空格時,使用int()函數轉化爲數字時無需提早去空格。由上可得,轉化的過ide
程中應該是作了去空格的操做了。函數
http://www.runoob.com/python/python-dictionary.htmlpost
字典是另外一種可變容器模型,且可存儲任意類型對象。url
字典的每一個鍵值 key=>value 對用冒號 : 分割,每一個鍵值對之間用逗號 , 分割,整個字典包括在花括號 {} 中 ,格式以下所示:
鍵通常是惟一的,若是重複最後的一個鍵值對會替換前面的,值不須要惟一。
值能夠取任何數據類型,但鍵必須是不可變的,如字符串,數字或元組。
一個簡單的字典實例:
也可如此建立字典:
dic={} dic["name"]="mcw" dic["age"]=18 print(dic)
------------結果:
{'name': 'mcw', 'age': 18}
#原有字典.update(另外一個字典) 不存在的鍵添加,存在的鍵覆蓋
userinfo={"username":"mcw","password":123456}
userinfo.update({"age":18,"password":654321})
print(userinfo)
---------------結果:
{'username': 'mcw', 'password': 654321, 'age': 18}
dic={"name":"mcw","age":18,"hobby":"music"} #pop刪除 dic.pop("hobby") print(dic) -----------結果: {'name': 'mcw', 'age': 18}
#del刪除
userinfo={"username":"mcw","password":123456}
del userinfo["password"]
print(userinfo)
------------------結果:
{'username': 'mcw'}
---value 是1 "1"不同的注意
userinfo={"username":"mcw","password":123456} userinfo["username"]="xiaoma" print(userinfo) -------------結果: {'username': 'xiaoma', 'password': 123456}
#多個鍵值修改
userinfo={"username":"mcw","password":123456}
userinfo.update({"username":"xiaoma","password":654321})
print(userinfo)
--------------------結果:
{'username': 'xiaoma', 'password': 654321}
userinfo={"username":"mcw","password":123456} print(userinfo['username']) #獲取字典中單個鍵的值 print(userinfo.keys()) #keys獲取字典中全部的鍵 print(userinfo.values()) #valuses獲取字典中全部的值 ------結果: mcw dict_keys(['username', 'password']) dict_values(['mcw', 123456])
print(type(userinfo.values()))
---------結果:
<class 'dict_values'>
userinfo={"username":"mcw","password":123456} #打印整個字典 print(userinfo) --------------結果: {'username': 'mcw', 'password': 123456} userinfo={"username":"mcw","password":123456} for v1,v2 in userinfo.items(): #items獲取全部的鍵值對 print(v1,v2) --------------結果: username mcw password 123456 for循環默認只循環字典中的鍵 userinfo={"username":"mcw","password":123456} for i in userinfo: print(i) -------------結果: username password 報錯:接收的多了 for item,v in userinfo: print(item,v) --------結果: for item,v in userinfo: ValueError: too many values to unpack (expected 2)
#字典.get(鍵)
「字典名["鍵"]」來取沒有的鍵會報錯。
「字典.get(鍵)」、「字典.get(鍵,鍵不存在時的返回值)」一樣能獲取字典的值,字典中沒有這個鍵的時候指定返回的值默認爲none(特殊的數據類型,佔內存空間的,是空的地址轉爲bool爲false)
建議:儘可能用get取字典,這樣能夠對鍵是否存在先作個判斷
userinfo={"username":"mcw","password":123456} result1=userinfo.get("username") result2=userinfo.get("age") print(result1,result2) ---------------結果: mcw None 使用形式: result=userinfo.get("鍵") if result==None: print("鍵不存在")
userinfo={ "username":"mcw", "password":123456 } print(userinfo) ---------結果: {'username': 'mcw', 'password': 123456}
user_list=[] while True: u=input("請輸入用戶:") if u=="N": break p=input("請輸入密碼:") v={} v["user"]=u v["pwd"]=p user_list.append(v) print(user_list) rec_str1=input("請輸入用戶:") rec_str2=input("請輸入密碼:") flag=0 for i in user_list: if i["user"]==rec_str1 and i["pwd"]==rec_str2: flag=1 if flag==1: print("請進行登陸") else: print("登陸失敗!") 完善後: user_list=[] while True: u=input("請輸入用戶:") if u=="N": break p=input("請輸入密碼:") v={} v["user"]=u v["pwd"]=p user_list.append(v) print(user_list) rec_str1=input("請輸入用戶:") rec_str2=input("請輸入密碼:") message="登陸失敗!" for i in user_list: if i["user"]==rec_str1 and i["pwd"]==rec_str2: message="登陸成功!" break print(message)
-----------------結果:
請輸入用戶:mcw
請輸入密碼:123
請輸入用戶:xiaoma
請輸入密碼:123
請輸入用戶:N
[{'user': 'mcw', 'pwd': '123'}, {'user': 'xiaoma', 'pwd': '123'}]
請輸入用戶:mcw
請輸入密碼:123
登陸成功!
單變量和雙變量接收字典items()返回值,單變量是循環接收字典鍵值對造成的元組,雙變量一個接收鍵
,一個接收值。
--- v="4+3" a,b=v.split("+") print(a,b) ------結果: 4 3 v="4+3" a=v.split("+") print(a[0],a[1]) ------------結果: 4 3 userinfo={"username":"mcw","password":123456} for i in userinfo.items(): print(i,type(i)) -------結果: ('username', 'mcw') <class 'tuple'> ('password', 123456) <class 'tuple'> userinfo={"username":"mcw","password":123456} for k,v in userinfo.items(): print(k,v,type(k),type(v)) ------------結果: username mcw <class 'str'> <class 'str'> password 123456 <class 'str'> <class 'int'>
兩個列表元素,一個當字典的鍵,另外一列表每一個元素都是字典分隔開來的值。合併成列表中有多個字典元素的方法.
li1=["name","age","hobby"] li2=["mcw,18,study","xiaoma,19,music","yh,10,eat"] print([[li1[j]+":"+li2[i].split(",")[j] for j in range(0,len(li1))] for i in range(0,len(li2))]) mcw=[{li1[j]:li2[i].split(",")[j] for j in range(0,len(li1))} for i in range(0,len(li2))] print(mcw) print(type(mcw[0])) ----------------結果: [['name:mcw', 'age:18', 'hobby:study'], ['name:xiaoma', 'age:19', 'hobby:music'], ['name:yh', 'age:10', 'hobby:eat']] [{'name': 'mcw', 'age': '18', 'hobby': 'study'}, {'name': 'xiaoma', 'age': '19', 'hobby': 'music'}, {'name': 'yh', 'age': '10', 'hobby': 'eat'}] <class 'dict'>
===
列表,元組嵌套。加一個字典,嵌套,意義何在呢
int/bool/str list/tuple/dict能夠相互嵌套,
字典值:能放各類 全部都能當
字典鍵 :能夠有:元組,數字,布爾值,字符串
不能夠:字典,列表 可hash的能夠當key,字典和列表是可變的,不可hash,因此不能當鍵。
#元組 列表有序,字典無序,Python3.6以後字典有序了。