1. 程式人生 > >Python學習(二)

Python學習(二)

不要問為什麼是(二),因為(一)特麼被我刪了。。。CSDN,你改版就改版,草稿箱你還動,欲哭無淚…先貼點(一)的程式碼吧:

import random
secret=random.randint(1,10)
print("**************恕瑞瑪,你們的皇帝回來啦!****************")
temp=input("Hei,guy,Guess what number is my favorite...:")
guess = int(temp)
while guess != secret:
    temp=input("You guess wrong...Try again!:")
    guess=int(temp)
    if guess==secret:
        print("You guess right")
        print("But No Ruan Yong")
    else:
        if guess > secret:
            print("That's big!")
        else :
            print("That's small!")
print("Good Game")   
print("*************Demo***********")
temp=input("Please input the grade to class:")
grade=int(temp)
if grade > 90:
    print("Your grade is A...")
else :
    if grade >= 80 and grade < 90:
        print("Your grade is B...")
    else :
        if grade >= 60 and grade < 80:
            print("Your grade is C...")
        else :
            if grade < 60 :
                print("You should hava some B number in your heart...")
print("Game Over...")    

print("************3-2DemoEx*********")
temp=input("Please input you number:")
grade=int(temp)
if grade > 90:
    print("Your grade is A...")
elif grade >= 80 and grade < 90:
    print("Your grade is B...")
elif grade >= 60 and grade < 80:
    print("Your grade is C...:")
else :
    print("B number ,You know")      

此外,
1.break、continue這倆Python也有;
2. * *//,第一個是冪運算,比如2**3==8,第二個是地板除,所得除數定為整數。
3. python中,可以用字串整數,相當於複製了N份。
4. 上面後面兩段程式碼是為了瞭解elif這個關鍵字
5. python中可以用import builtins (或直接使用__builtins__)檢視內建函式,內建函式中,以字母形式的都可以用help(函式名),來檢視具體資訊。
6. python的foreach語句:
for 元素(隨便起個名)in (字串、列表什麼的)
print(元素)
ex: for each in ‘Crazy’
print(each)
7.python的靈魂在於TAB鍵,相當於JAVA中的大括號了。
8. python三目運算子:
 條件為真時的結果 if 判段的條件 else 條件為假時的結果
 暫時就記起來這麼多,剩下的再說。。。CSDN個坑。。
Python列表(list)
1.
python中沒有陣列,只有列表(list)和元組(tuple),所以,列表自然而言的充當起了陣列的角色,列表除了可以存放單一型別的資料,還可以儲存不同型別的資料。
member=[‘天行九歌’,‘秦時明月’,‘空山鳥語’]—>單一型別
member=[‘天行九歌’,2,‘空山鳥語’,3.14,[1,‘Time’,2.12]]—>複雜型別
member=[]—>空列表
輸出一下:
for each in member :
print(each)
2.向列表中新增元素
append():—>一次只能新增一個元素,加多個會報錯的。
ex:member.append(‘蟲師’)
如果想一次加多個元素,可以使用:
extend():
member.extend([’'沒有黃段子的無聊世界,‘命運石之門’]),實際上
extend()也只能接收一個元素,這個元素是個列表,列表裡可以存放多個元素。
insert():
append()、extend()都是把元素新增到列表末尾。而insert()則不同:
insert(int pos,object item), 第一個是插入的位置,第二個是插入的元素
member.insert(1,[‘Ok’,‘No’])
3.在列表中刪除元素
member[pos]取資料元素也是這種操作,嗯,跟java,c一樣。
①remove()
remove(元素值),比如上面的remove(‘天行九歌’)
②del(是一個語句,不是方法,所以不用括號),ex:
del member[1]
del member—>會刪除掉整個列表
③pop()【列表畢竟是個棧嘛,有這個也不為怪】
從列表中取出最後一個元素,返回出來,這樣列表中也就沒了。
member.pop()
4.列表分片(Slice)
利用分片,可以一次性取多個元素。分片也很簡單,如下:
member[1:3]--------->前閉後開,會取出pos為1,2的兩個元素
member[ :3]---------->會取出pos為0,1,2的三個元素
member[1: ]---------->為取出pos為1以及之後的元素
member[]-------------->會取出真個列表的元素
可以通過分片賦值給其他列表,然後進行相關的操作。注意,別越界了!!
5.比較操作符、邏輯操作符、連線操作符、重複操作符、成員關係操作符
list可以比較大小,ex:
list[123]>list[456] ===>False
list[123,456]>list[234,324]---->False,
如果有多個元素,就會只比較第一個元素;
如果是字串,那麼就根據ASCII碼來比較
list也可以相加,ex:
list1=[123]
list2=[456]
list3=list1+list2
list3-----》[123,456]
Tip:儘量不要這麼加,用append、extend方法才是規範用法;list只能加list,不能加其他型別的變數。
③list可以進行乘法操作
list1
3---->[123,123,123]
④in、not in操作符
用來判斷元素在不在列表中;
456 in list1---->False
123 not in list1---->False
Tips:in 、not in只能判斷一層,內嵌的list中的元素是察覺不到的ex:
list4=[123,[‘天馬行空’,‘萬里奔騰’],456]
‘天馬行空’ in list4-------------->False
‘天馬行空’ in list4[1]----------->True
list[1][1]------------------------->萬里奔騰
⑤dir(list)------->檢視list的BIF
列一下吧:
append、clear、copy、count、extend、index、insert、
pop、remove、reverse、sort
ex:
list4.count(123)------------>會返回list4中123出現的次數
list4.index(123)------------>會返回list4中123的索引值,第一次出現的索引值
list4.index(123,3,7)-------->返回list4中索引3到7之間123的索引值
list4.reverse()-------------------->成員順序反轉
list4.sort()------------------------->成員排序,從小到大
如果想從大到小:
list4.sort(reverse=True),即可反轉
這裡需要注意的是,切片和直接賦值的區別:
list2=list1[:]
list3=list1,
list2和list3賦值之後雖然都一樣,但是如果對list1進行排序
那麼list3排序也會跟著改變。這就很尷尬了。所以賦值最好用切片,
保持原則才是最好的。
Tips:能用BIF解決的事情,就不要用算數運算子操作。很容易導致問題的出現


元組
元組和列表類似,很多列表的操作,元組也可以,像分片等,但也有區別:
1.元組是用圓括號
2.元組是不能被修改!【但有方法在一個元組上修改得到一個新的元組,看似是修改,實則不然,跟str一樣】
3.temp=(1)===> 建立的是int,如果想建立只有一個元素的元組:
temp=(1,)----->加一個逗號,這個逗號很關鍵的,空元組直接用小括號即可
4.8*(8,)---->(8,8,8,8,8,8,8,8)
5.元組其實也可以新增和刪除,不過需要換一下思路:
新增:把元素分割成兩部分,中間加上新增的元組即可:

temp=temp[:2]+('何處是鬼畜',)+temp[2:]

刪除:
完全刪除:del temp 實際上沒啥實際用處


字串—>各式各樣的內建函式

1.字串分割:
str=‘where is my dream’
temp=str[:8]
====>temp=‘where is’

可見這個分片字串也可以分割的。

2.字串的插入跟tuple基本一致:

str=str[:8]+'heart'+str[8:]====>str='where isheart my dream'

3.capitalize()----->把字串的第一個字元改為大寫
casefold()------->把整個字串的所有字元改為小寫
center(width)—>將字串居中,並使用空格填充至長度width的新字串
count(sub[,start[,end]])—>返回sub在字串裡邊出現的次數,start和end引數表示範圍,可選
encode(encode=‘utf-8’,errors=‘strict’)---->以encoding指定的編碼格式對字串進行編碼
endswith(sub[,start[,end]])---->檢查字串是否以sub字串結尾,如果是返回True,否則返回False,start和end引數表示範圍,可選
expandtabs([tabsize=8])---->把字串中的tab(\t)符號轉換為空格,如不指定引數,預設的空格數量是tabsize=8個,這個8是包含前面字元的
find(sub[,start[,end]])----->檢測sub是否包含在字串中,如果有則返回索引值,否則返回-1,start和end引數表示範圍,可選
index(sub[,start[,end]])---->跟find方法一樣,不過如果sub不在string中會產生一個異常
isalnum()---->如果字串至少有一個字元並且所有自負都是字母或數字,則返回T入額,否則返回false
isalpha()---->如果字串至少有一個字元並且所有字元都是字母則返回True,否則返回False
isdigit()------>如果字串值只包含數字則返回True,否則返回False
islower()----->如果字串至少包含一個區分大小寫的字元,並且這些字元都是小寫,則返回True,否則返回False
isnumberic()----->如果字串只包含數字字元,則返回True,否則返回False
isspace()----->如果字串只包含空格,則返回True,否則返回False
istitle()------->如果字串是標題化(所有的單詞都是以大寫開始,其餘字母都是小寫)則返回True,否則返回False
isupper()----->如果字串中至少包含一個區分大小寫的字元,並且這些字元都是大寫,則返回True,否則返回False
join(sub)----->以字串作為分割符,插入到sub中所有的字元之間
ljust(width)---->和上面的center對應,返回一個左對齊的字串,並使用空格填充至長度為width的新字串
lower()----->轉化字串中所有大寫字元為小寫
lstrip()------>去掉字串左邊的所有空格
partition(sub)---->找到字串sub,把字串分成一個三元組,如果字串中不包括sub則返回(‘原字串’,’’,’’)
replace(old,new[,count])—>把字串中的old字串替換為new子字串,如果count指定,則替換不超過count次
rfind(sub[,start[,end]]----->類似於find(),不過是從右邊查詢
rindex(sub[,start[,end]])---->類似於index()方法,不過是從右邊開始查詢
rpartition(sub)…
rstrip()-------->刪除字串末尾的空格
split(sep=None,maxsplit=-1)------>不帶引數預設是以空格作為分隔符切片字串,如果maxsplit引數有設定,則僅分割maxsplit個字串,返回切片後的子字串拼接的列表
splitlines([keepends])…
startswith(prefix[,start[,end]])----->檢查字串是否以prefix開頭,是則返回True,否則返回False,start和end引數可以指定範圍檢查,可選。
strip([chars])----->刪除字串前邊和後邊所有的空格,cahrs引數可以定製刪除的字元,可選。
swapcase()-------->翻轉字串中的大小寫
title()------>返回標題化的字串
translate(table)------>根據table的規則(可以由str.maketrans(‘a’,‘b’)定製)轉換字元中的字元
upper()------>轉換字串中的所有小寫字元為大寫
zfill(width)---->返回長度為width的字串,原字串右對齊,前邊用0填充


Python之字串格式化:
格式化輸出嘛,你懂得,無非套個模板,輸入自己的變數,對應java中的String.format(),不過貌似python的格式化輸出更強一些,python的字串格式化有三種方法:
1.位置對映:
“{}:{}”.format(‘i love you’,‘forever’)
ex:

 'Who i {0}is {1}'.format('love','you')
 ----->'Who i loveis you'

2.關鍵字對映:
“{server}{0}:{1}”.format(‘this is’,‘china’,server=‘mobile’)
ex:

 'The {param} you {0} is {1}'.format('leave','2018',param='time')
 -------->'The time you leave is 2018'

這裡需要注意一點,在format函式中,位置引數必須在關鍵字引數之前,否則會報錯的!
這裡提一下轉義字元:
\–>打印出來就是一個反斜槓
\t–>打印出來就會看到前面空了一個TAB的位置
必須呼叫print()函式才會有效果。
這裡如果我們想打印出來大括號,則可以在外面再套一層大括號,ex:

 '{{0}}'.format('隨便填')
 ----->'{0}'

3.格式符
格式化為真實值預留位置,並控制顯示的格式。格式符可以包含一個型別碼,用以控制顯示的型別,型別碼如下:
%c 單個字元
%s 字串(採用str()的顯示)
%r 字串(採用repr()的顯示)
%b 二進位制整數
%d 十進位制整數
%o 八進位制整數
%x 十六進位制整數
%e 指數(基底寫為e)
%E 指數(基底寫為E)
%f 浮點數
%F 浮點數,與上面的相同
%g 指數或浮點數
%G 指數或浮點數
%% 字元‘%’
字串通過tuple,也就是元組傳入實際的值
ex:

'%d +%d=%d' % (1,1,3)
'%o' % 10---->'12'
'%e' % 27.658--->'2.765800e+01'
'%d%%' % 24---->'24%'
'%5.1f' % 251.1234--->'251.1'



Python之序列
列表、元組和字串的共同點:
①都可以通過索引得到每一個元素
②預設索引值總是從0開始
③可以通過分片的方法得到一個範圍內的元素的集合
④有很多共同的操作符(重複操作符、拼接操作符、成員關係操作符)

list():把一個可迭代物件轉換為列表。【可以不帶參,也可以帶一個迭代器的引數】
tuple([iterable]):把一個可迭代物件轉換為元組。
迭代:所謂迭代就是重複反饋過程的活動。
ex:

b='Expectation is the root of all heartache.'
b=list(b)
b---->
['E', 'x', 'p', 'e', 'c', 't', 'a', 't', 'i', 'o', 'n', ' ', 'i', 's', ' ', 't', 'h', 'e', ' ', 'r', 'o', 'o', 't', ' ', 'o', 'f', ' ', 'a', 'l', 'l', ' ', 'h', 'e', 'a', 'r', 't', 'a', 'c', 'h', 'e', '.']

c=(1,1,2,3,4,5,5,5)
c=list(c)
c--------->[1, 1, 2, 3, 4, 5, 5, 5]

幾個函式:
【需要注意一點,用底下幾個函式的時候,序列中不要char和int混用,會報錯】
1.len(),取list的長度,裡面傳入的引數必須得是定義過的,不然會報錯
2.max(),返回序列或者引數集合中的最大值,因為是序列,所以裡面傳3.str、tuple或者list都可以
4.min(),如上,取最小值
5.sum(),求和,要求同上
6.sorted(),序列排序,與list.sort()效果是一樣的,預設從小到大
7.reversed(),返回迭代器列表,可以在外面包裹一層list()檢視
8.enumerate(),返回帶有index的元素,很騷
9.zip()
ex:

max(1,2,3,4,5)--->5
max(b)[上面的列表]---->'x'[根據ASCII碼比較大小]
max((1,2,3))------->3

如果是:

min((1,2,3,4,5,'a'))

就會報錯,int不能跟ASCII碼直接比較。

sorted()、reversed()

a=[23,34,54,64,234,325,234]
sorted(a)
----》[23, 34, 54, 64, 234, 234, 325]
 reversed(a)
 -----》<list_reverseiterator object at 0x00000136633635F8>[迭代器物件]
 list(reversed(a))
 ------》[234, 325, 234, 64, 54, 34, 23]********貌似是個bug?待查+1

enmurate()

list(enumerate(a))
--->[(0, 23), (1, 34), (2, 54), (3, 64), (4, 234), (5, 325), (6, 234)]

zip()

a=[1,2,3,4,5,6,7,8]
b=[4,5,6,7]
list(zip(a,b))
------>[(1, 4), (2, 5), (3, 6), (4, 7)]