1. 程式人生 > >python變數/分支/迴圈/陣列/列表/元組/序列

python變數/分支/迴圈/陣列/列表/元組/序列

       最近比較流行python,於是我這種從不趕潮流的人也決定跟一把潮流。工作原因學習時間有限,好容易擠著時間看了一部分網上的視訊,卻被勸說沒什麼用處,我們就是靠java吃飯的。當然多學一種語言也不會有什麼壞處,既然開始了,那就應該堅持,不管對錯,不管是否有用都要把它學完。下面是學習筆記:

-----------------------------------Bif及列印----01-------------------------------

 BIF 就是 Built-in Functions,內建函式。

1.python是什麼語言?

python是一種支援面向物件的解釋性高階語言,屬於指令碼語言的一種

2.IDLE是什麼?

是python程式的基本ide(整合開發環境),具備基本的ide的功能

3.print()的作用是什麼? 

列印輸出

4.python中表示乘法的符號是什麼?  

*數字中代表乘法,字串中代表執行5次,例>>> print('a'*5)    aaaaa

5.為什麼print("i love you" + 5)不可以執行會報錯,而print("i love you" * 5)可以正常執行?

python中不同型別的東西不能加在一起

6.如何在字元穿中嵌入雙引號  

>>> print('a"b"c')        a"b"c

>>> print ('a\"b"c')      a"b"c

>>> print("a\"b\"c")    a"b"c

---------------------------------縮排---02--------------------------------------

1. Python3 提供了多少個 BIF?

 在 Python 或 IDLE 中,輸入 dir(__builtins__) 可以看到 Python 提供的內建方法列表

 help(input) 

2. 在 Python 看來:'FishC' 和 'fishc' 一樣嗎?

不一樣,在python種區分大小寫。但是開發過成功很難犯此類問題,python是可以先使用後宣告的。

3. Python 中什麼是最重要的?你贊同嗎?

縮排,在要縮排之前打“:“,python會進行自動縮排

4. 這節課的例子中出現了“=”和“==”,他們表示不同的含義,你在程式設計的過程中會不小心把“==”誤寫成“=”嗎?有沒有好的辦法可以解決這個問題呢?

=是賦值,==是比較,python種很難犯此類為難題,如果if(c=1){}會直接報錯,if裡不可以賦值

5. 你聽說過“拼接”這個詞嗎? 

拼接字串:"I"+"LOVE"+"YOU"='ILOVEYOU'

動動手:

0. 編寫程式:hello.py,要求使用者輸入姓名並列印“你好,姓名!”

name=input('請輸入你得姓名')

print('你好'+name)

1. 編寫程式:calc.py 要求使用者輸入1到100之間數字並判斷,輸入符合要求列印“你妹好漂亮”,不符合要求則列印“你大爺好醜”

temp = input('請輸入1到100之間的數字:')

num = int(temp)

if 1<=num<=100:

    print('你好漂亮')

else:

    print('你好醜')

-----------------------------------變數及賦值---03--------------------------------------

0. 以下哪個變數的命名不正確?為什麼?

(A) MM_520  (B) _MM520_  (C) 520_MM  (D) _520_MM

C:變數名不能以數字開頭

1. 在不上機的情況下,以下程式碼你能猜到螢幕會列印什麼內容嗎?

>>>myteacher = '小甲魚'

>>>yourteacher = myteacher

>>>yourteacher = '黑夜'

>>>print(myteacher)

 '小甲魚' 

2. 在不上機的情況下,以下程式碼你能猜到螢幕會列印什麼內容嗎?

>>> myteacher = '小甲魚'

>>> yourteacher = myteacher

>>> myteacher = '黑夜'

>>> print(yourteacher)

 '小甲魚'

3. 在不上機的情況下,以下程式碼你能猜到螢幕會列印什麼內容嗎?

>>>first = 520

>>>second = '520'

>>>first = second

>>>print(first)

會列印:520,注:這裡沒有單引號括起來,但是他是一個字串,因為使用 print() 列印,所以不包含單引號

4. 除了使用反斜槓(\)進行字元轉義,還有什麼方法可以列印:Let's go! 這個字串?

>>>  "Let's go!"   >>>'Let\'s go'

5. 如果非要在原始字串結尾輸入反斜槓,可以如何靈活處理?

>>> str = r'C:\Program Files\FishC\Good''\\'

6. 在這一講中,我們說變數的命名需要注意一些地方,但小甲魚在舉例的時候貌似卻幹了點兒“失誤”的事兒,你能看得出小甲魚例子中哪裡有問題嗎?

在例子中小甲魚起了個 str 名字的變數,但事實上我們發現,str 的顏色跟普通變數貌似不同?沒錯,str() 和 print() 都是內建函式,但 Python 貌似不介意我們對內建函式進行賦值操作,所以這點我們以後就要注意啦,否則可能會出現 BUG 

動動手:

0. 還記得我們第一講的動動手的題目嗎?這一次要求使用變數,計算一年有多少秒?

提示:可以以 DaysPerYear(每年天數),HoursPerDay(每天小時數),MinutesPerHour(每小時分鐘數),SecondsPerMinute(每分鐘秒數)為變數名。

>>> DaysPerYear = 365

>>> HoursPerDay = 24

>>> MinutesPerHour = 60

>>> SecondsPerMinute = 60

>>> result=DaysPerYear*HoursPerDay*MinutesPerHour*SecondsPerMinute

>>> print(result)

1. 關於最後提到的長字串(三重引號字串)其實在 Python3 還可以這麼寫,不妨試試,然後比較下哪種更方便?

>>>string = ( 

"我愛魚C,\n"

"正如我愛小甲魚,\n"

"他那呱唧呱唧的聲音,\n"

"總纏繞於我的腦海,\n"

"久久不肯散去……\n")

>>> string="""我愛魚C,

正如我愛小甲魚,

他那呱唧呱唧的聲音,

總纏繞於我的腦海,

久久不肯散去……"""

2. 請寫下這一節課你學習到的內容:格式不限,回憶並複述是加強記憶的好方式!

變數名,單引號轉義,三重雙引號換行,變數名給值

------------------------------分支迴圈---04--------------------------------------

迴圈:

while a==b:

     if c==d:

     else:

          if e==g:

          else:

------------------------------資料型別----05--------------------------------

1、數值型別

①整型int:整型和長整型統一表示(同java的long)

②浮點型float:用小數點區分,表示小數

③e記法:

>>> 150000000000

150000000000

>>> 1.5e11

150000000000.0

>>> 15e10

150000000000.0

④布林型別bool:

>>> True+True

2

>>> True+False

1

>>> True*False

0

2、型別轉換的用法bif

①int()

>>> a='520'

>>> b=int(a)   字串為整型轉int可以正常轉換,其餘情況會直接報錯

>>> b

520

>>> a=5.99

>>> c=int(a)    浮點型轉為int做截斷處理

>>> c

5

②float()將字串轉換為浮點數

>>> a='520'

>>> b=float(b)

>>> b

520.0

>>> a=520

>>> b=float(a)

>>> b

520.0

③str()轉換為字串

>>> a=5.99

>>> b=str(a)

>>> b

'5.99'

>>> c=str(5e19)

>>> c

'5e+19'

注:如果之前str賦值的話,它的身份將不再是bif,而是一個變數名,再次使用str()會報錯。

3、關於獲得型別的資訊

①type()獲取變數的型別

>>> type('520')

<class 'str'>

>>> type(5.2)

<class 'float'>

>>> type(1)

<class 'int'>

>>> type(5e10)

<class 'float'>

②isinstance()比較兩個變數的型別是否一致

>>> isinstance('小甲魚',str)

True

>>> isinstance(1,int)

True

>>> isinstance(5.2,int)

False

------------------------------常用操作符----06--------------------------------

>>> a=b=c=d=10

>>> a+=1

>>> a

11

>>> b-=3

>>> b

7

>>> c*=2

>>> c

20

>>> d/=2

>>> d

5.0

>>> 10//2    按照原來的型別返回

5

>>> 3.0//2

1.0

>>> 11%2

1

>>> 3**2      冪運算

9

>>> -3**2

-9

>>> 3**-2

0.1111111111111111

③優先順序

先* / 後+- 遇到括號先算括號

④邏輯操作符

and  true+true=true

or    false+false=false

not  不等於   >>> 3<4<5     True

------------------------分支和迴圈----07/08/09-------------------------

①見plangame.py

score = int(input('請輸入一個分數:'))

if 100 >= score >= 60:

    print('A')

elif 60 > score >= 0:

    print('D')

else:

    print('輸入錯誤')

③條件表示式(三元操作符)

>>> x,y=4,5

~~~~~~~~~~~~~~~ 

>>> if x<y:

            small=x

         else:

  small=y

>>> small

4

~~~~~~~~~~~~~~~

>>> small=x if x<y else y

>>> small

4

④斷言assert,當條件不成立時會丟擲異常

>>> assert 3>4

Traceback (most recent call last):

  File "<pyshell#9>", line 1, in <module>

    assert 3>4

AssertionError

⑤while迴圈

while 條件:

     迴圈體

⑥for迴圈

for 目標  in 表示式:

     迴圈體

例:

>>> favourite = 'fishC'

>>> for i in favourite:

     print(i,end=' ')     

f i s h C 

⑦range

>>> for i in range(1,10,2):

               print(i)

1

3

5

7

9

⑧break和continue

break:終止當前迴圈,跳出迴圈體

continue:結束本次迴圈,並開始下一輪迴圈

------------------------陣列----10/11/12-------------------------

①列表裡可以新增各種型別的元素

>>> mix=[1,'s',4.3,[1,2,3]]

>>> mix

[1, 's', 4.3, [1, 2, 3]]

>>> empty=[]

>>> empty

[]

②向列表新增元素

>>> member=['小甲魚','a','b','c']

>>> member

['小甲魚', 'a', 'b', 'c']

>>> member.append('追加1')

>>> member

['小甲魚', 'a', 'b', 'c', '追加1']

>>> member.extend(['追加2','追加3'])

>>> member

['小甲魚', 'a', 'b', 'c', '追加1', '追加2', '追加3']

>>> member.insert(0,'牡丹')

>>> member

['牡丹', '小甲魚', '牡丹', 'a', 'b', 'c', '追加1', '追加2', '追加3']

③獲取列表中的元素

>>> member[0]

'牡丹'

④從列表刪除元素

>>> member

['a', 'a', 'b', 'c', 'f', 'c', 'd', 'e']

>>> member.remove('c')  刪除第一個匹配的元素

>>> member

['a', 'a', 'b', 'f', 'c', 'd', 'e']

>>> del member[0]

>>> member

['a', 'b', 'f', 'c', 'd', 'e']

>>> member.pop()

'e'

>>> name=member.pop()

>>> name

'd'

>>> member

['a', 'b', 'f', 'c']

⑤列表分片slice

>>> member[1:3]   不包含最後一個元素

['b', 'f']

>>> member    分片後原列表的元素不會發生改變

['a', 'b', 'f', 'c']

>>> member[:3]   預設從0開始

['a', 'b', 'f']

>>> member[1:]   預設到最後一個元素

['b', 'f', 'c']

>>> member[:]     列表的拷貝

['a', 'b', 'f', 'c']

⑥列表的常用操作符

>>> list1=list3=[123,456]

>>> list2=[234,123]

>>> list1>list2     比較列表中元素的第一個值

False

>>> (list1<list2) and (list1==list3)   

True

>>> list4=list1+list2    列表的拼接

>>> list4

[123, 456, 234, 123]

>>> list3*3     列表的迴圈拼接

[123, 456, 123, 456, 123, 456]

>>> list3*=3   列表拼接賦值

>>> list3

[123, 456, 123, 456, 123, 456]

>>> list5=[123,['a','b'],456]  綜合列表

>>> 'a' in list5

False

>>> 'a' in list5[1]

True

>>> list5[1][0]

'a'

⑦列表的小夥伴們(列表型別的內建函式)

>>> list1

[456, 123, 456, 123, 456, 123]

>>> list1.count(123)   123出現的次數

3

>>> list1.index(123)    123出現的索引位置

1

>>> list1.reverse()        將列表例的資料倒置

>>> list1

[123, 456, 123, 456, 123, 456]

>>> list1.sort()             將列表按照從小到大的順序排序

>>> list1

[123, 123, 123, 456, 456, 456]

>>> list1.sort(reverse=True)    將列表按照倒序排序 

>>> list1

[456, 456, 456, 123, 123, 123]

⑧注意列表的拷貝及賦值

>>> list1

[2, 6, 7, 3, 1, 4, 3, 9]

>>> list2=list1[:]     拷貝,在記憶體中重新複製一份

>>> list2

[2, 6, 7, 3, 1, 4, 3, 9]

>>> list3=list1        給原來的值重新貼一個標籤,會隨著值得變化而變化

>>> list3

[2, 6, 7, 3, 1, 4, 3, 9]

>>> list1.sort()

>>> list1

[1, 2, 3, 3, 4, 6, 7, 9]

>>> list2

[2, 6, 7, 3, 1, 4, 3, 9]

>>> list3

[1, 2, 3, 3, 4, 6, 7, 9]

------------------------元組---13-------------------------

①元組和列表非常相近,區別:

列表可以任意修改一個元素,可以任意刪除和插入元素

元組是不可改變的

②建立一個元組(元組主要是用()和逗號用作區分)

③更新和刪除一個元組

>>> temp

('a', 'b', 'c')

>>> temp=temp[:1]+('d',)+temp[1:]     元組中新增一個元素

>>> temp

('a', 'd', 'b', 'c')

>>> del temp    刪除元組

④元組相關操作符

同列表一樣

------------------------字串----14/15-------------------------

見單獨筆記

----------------------------序列---16---------------------------

>>> a=list()

>>> a

[]

>>> len(a)    判斷a列表的長度

0

>>> b='I love fishc'

>>> b=list(b)    把字串轉為list列表

>>> b

['I', ' ', 'l', 'o', 'v', 'e', ' ', 'f', 'i', 's', 'h', 'c']

>>> len(b)    判斷b列表的長度 

12

>>> c=(1,1,2,3,5,8,13)

>>> c=list(c)

>>> c

[1, 1, 2, 3, 5, 8, 13]

>>> numbers=[1,18,14,0,-3,-98,76]

>>> max(numbers)    取列表裡的最大數

76

>>> min(numbers)     取列表裡的最小數 

-98

>>> tuple2=(3.1,3.4,2.5)

>>> sum(tuple2)      列表求和

9.0

>>> sorted(numbers)    把number排序

[-98, -3, 0, 1, 14, 18, 76]

>>> list(reversed(numbers))   列表反轉用list包一層

[76, -98, -3, 0, 14, 18, 1]

>>> list(enumerate(numbers))    列舉列舉

[(0, 1), (1, 18), (2, 14), (3, 0), (4, -3), (5, -98), (6, 76)]

>>> a=[1,2,3,4,5,6]

>>> b=[4,3,2,3,2,2,3,4,4]

>>> list(zip(a,b))      打包兩個list,從0開始,多餘的部分捨棄掉

[(1, 4), (2, 3), (3, 2), (4, 3), (5, 2), (6, 2)]