Python基礎初識

ZeroZN發表於2020-07-23

1. 執行python程式碼。

在d盤下建立一個t1.py檔案內容是:

print('hello world')

開啟windows命令列輸入cmd,確定後 寫入程式碼python d:t1.py

img

img

您已經執行了第一個python程式, 即:終端---->cmd-----> python 檔案路徑。 回車搞定~

2. 直譯器。

上一步中執行 python d:t1.py 時,明確的指出 t1.py 指令碼由 python 直譯器來執行。

如果想要類似於執行shell指令碼一樣執行python指令碼,例: ./t1.py,那麼就需要在 hello.py 檔案的頭部指定直譯器,如下:

1#!/usr/bin/env python
2  
3 print "hello,world"

如此一來,執行: ./t1.py 即可。

ps:執行前需給予t1.py 執行許可權,chmod 755 t1.py

3. 註釋。

當行註釋:# 被註釋內容

多行註釋:'''被註釋內容''',或者"""被註釋內容"""

4. 變數

變數是什麼? 變數:把程式執行的中間結果臨時的存在記憶體裡,以便後續的程式碼呼叫。

4.1、宣告變數

lux = '魯迅本人'

上述程式碼宣告瞭一個變數,變數名為: lux,變數name的值為:"魯迅本人"

變數的作用:暱稱,其代指記憶體裡某個地址中儲存的內容

img

4.2、變數定義的規則:

  • 變數名只能是 字母、數字或下劃線的任意組合

  • 變數名的第一個字元不能是數字

  • 以下關鍵字不能宣告為變數名 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

  • 變數的定義要具有可描述性。

4.3、推薦定義方式

#駝峰體

AgeOfOldboy = 56

NumberOfStudents = 80

#下劃線

age_of_oldboy = 56

number_of_students = 80

你覺得哪種更清晰,哪種就是官方推薦的,我想你肯定會先第2種,第一種AgeOfOldboy咋一看以為是AngelaBaby

4.4、變數的賦值

lux = '魯迅本人'、
name = '太白金星'

img

name1 = '太白金星'
name2 = name1
name3 = name2

img

4.5、定義變數不好的方式舉例

  • 變數名為中文、拼音

  • 變數名過長

  • 變數名詞不達意

5. 常量

常量即指不變的量,如pai 3.141592653..., 或在程式執行過程中不會改變的量

舉例,假如老男孩老師的年齡會變,那這就是個變數,但在一些情況下,他的年齡不會變了,那就是常量。在Python中沒有一個專門的語法代表常量,程式設計師約定俗成用變數名全部大寫代表常量

AGE_OF_OLDBOY = 56

c語言中有專門的常量定義語法,const int count = 60;一旦定義為常量,更改即會報錯

6. 基礎資料型別(初始)。

什麼是資料型別?

  我們人類可以很容易的分清數字與字元的區別,但是計算機並不能呀,計算機雖然很強大,但從某種角度上看又很傻,除非你明確的告訴它,1是數字,“漢”是文字,否則它是分不清1和‘漢’的區別的,因此,在每個程式語言裡都會有一個叫資料型別的東東,其實就是對常用的各種資料型別進行了明確的劃分,你想讓計算機進行數值運算,你就傳數字給它,你想讓他處理文字,就傳字串型別給他。Python中常用的資料型別有多種,今天我們暫只講3種, 數字、字串、布林型別

6.1、整數型別(int)。

int(整型)

在32位機器上,整數的位數為32位,取值範圍為-231~231-1,即-2147483648~2147483647

在64位系統上,整數的位數為64位,取值範圍為-263~263-1,即-9223372036854775808~9223372036854775807

除了int之外, 其實還有float浮點型, 複數型,但今天先不講啦

6.2、字串型別(str)。

在Python中,加了引號的字元都被認為是字串!

>>> name = "Alex Li" #雙引號
>>> age = "22"       #只要加引號就是字串
>>> age2 = 22         #int
>>>
>>> msg = '''My name is taibai, I am 22 years old!''' #我擦,3個引號也可以
>>>
>>> hometown = 'ShanDong'   #單引號也可以

那單引號、雙引號、多引號有什麼區別呢? 讓我大聲告訴你,單雙引號木有任何區別,只有下面這種情況 你需要考慮單雙的配合

msg = "My name is Alex , I'm 22 years old!"

多引號什麼作用呢?作用就是多行字串必須用多引號

msg = '''
今天我想寫首小詩,
歌頌我的同桌,
你看他那烏黑的短髮,
好像一隻炸毛雞。
'''
print(msg)

字串拼接

數字可以進行加減乘除等運算,字串呢?讓我大聲告訴你,也能?what ?是的,但只能進行"相加"和"相乘"運算。

>>> name
'Alex Li'
>>> age
'22'
>>>
>>> name + age #相加其實就是簡單拼接
'Alex Li22'
>>>
>>> name * 10 #相乘其實就是複製自己多少次,再拼接在一起
'Alex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex Li'

注意,字串的拼接只能是雙方都是字串,不能跟數字或其它型別拼接

>>> type(name),type(age2)
(<type 'str'>, <type 'int'>)
>>>
>>> name
'Alex Li'
>>> age2
22
>>> name + age2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects #錯誤提示數字 和 字元 不能拼接

6.3、布林值(True,False)。

布林型別很簡單,就兩個值 ,一個True(真),一個False(假), 主要用記邏輯判斷

但其實你們並不明白對麼? let me explain, 我現在有2個值 , a=3, b=5 , 我說a>b你說成立麼? 我們當然知道不成立,但問題是計算機怎麼去描述這成不成立呢?或者說a< b是成立,計算機怎麼描述這是成立呢?

沒錯,答案就是,用布林型別

>>> a=3
>>> b=5
>>>
>>> a > b #不成立就是False,即假
False
>>>
>>> a < b #成立就是True, 即真
True

7. 程式互動

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
# 將使用者輸入的內容賦值給 name 變數
name = input("請輸入使用者名稱:")
 
# 列印輸入的內容
print(name)

執行指令碼就會發現,程式會等待你輸入姓名後再往下繼續走。

可以讓使用者輸入多個資訊,如下

#!/usr/bin/env python
# -*- coding: utf-8 -*-
name = input("What is your name?")
age = input("How old are you?")
hometown = input("Where is your hometown?")

print("Hello ",name , "your are ", age , "years old, you came from",hometown)

8. 流程控制之--if。

  假如把寫程式比做走路,那我們到現在為止,一直走的都是直路,還沒遇到過分叉口,想象現實中,你遇到了分叉口,然後你決定往哪拐必然是有所動機的。你要判斷那條岔路是你真正要走的路,如果我們想讓程式也能處理這樣的判斷怎麼辦? 很簡單,只需要在程式裡預設一些條件判斷語句,滿足哪個條件,就走哪條岔路。這個過程就叫流程控制。

if...else 語句

單分支

if 條件:
  滿足條件後要執行的程式碼

雙分支

"""
if 條件:
  滿足條件執行程式碼
else:
  if條件不滿足就走這段
"""
AgeOfOldboy = 48

if AgeOfOldboy > 50 :
  print("Too old, time to retire..")
else:
  print("還能折騰幾年!")

縮排

這裡必須要插入這個縮排的知識點

你會發現,上面的if程式碼裡,每個條件的下一行都縮排了4個空格,這是為什麼呢?這就是Python的一大特色,強制縮排,目的是為了讓程式知道,每段程式碼依賴哪個條件,如果不通過縮排來區分,程式怎麼會知道,當你的條件成立後,去執行哪些程式碼呢?

在其它的語言裡,大多通過{}來確定程式碼塊,比如C,C++,Java,Javascript都是這樣,看一個JavaScript程式碼的例子

var age = 56
if ( age < 50){
console.log("還能折騰")
  console.log('可以執行多行程式碼')
}else{
  console.log('太老了')
}

在有{}來區分程式碼塊的情況下,縮排的作用就只剩下讓程式碼變的整潔了。

Python是門超級簡潔的語言,發明者定是覺得用{}太醜了,所以索性直接不用它,那怎麼能區分程式碼塊呢?答案就是強制縮排。

Python的縮排有以下幾個原則:

  • 頂級程式碼必須頂行寫,即如果一行程式碼本身不依賴於任何條件,那它必須不能進行任何縮排

  • 同一級別的程式碼,縮排必須一致

  • 官方建議縮排用4個空格,當然你也可以用2個,如果你想被人笑話的話。

多分支

回到流程控制上來,if...else ...可以有多個分支條件

if 條件:
  滿足條件執行程式碼
elif 條件:
  上面的條件不滿足就走這個
elif 條件:
  上面的條件不滿足就走這個
elif 條件:
  上面的條件不滿足就走這個    
else:
  上面所有的條件不滿足就走這段

寫個猜年齡的遊戲吧

age_of_oldboy = 48

guess = int(input(">>:"))

if guess > age_of_oldboy :
  print("猜的太大了,往小裡試試...")

elif guess < age_of_oldboy :
  print("猜的太小了,往大里試試...")

else:
  print("恭喜你,猜對了...")

上面的例子,根據你輸入的值不同,會最多得到3種不同的結果

再來個匹配成績的小程式吧,成績有ABCDE5個等級,與分數的對應關係如下

A    90-100
B   80-89
C   60-79
D   40-59
E   0-39

要求使用者輸入0-100的數字後,你能正確列印他的對應成績

score = int(input("輸入分數:"))

if score > 100:
  print("我擦,最高分才100...")
elif score >= 90:
  print("A")
elif score >= 80:
  print("B")
elif score >= 60:
  print("C")
elif score >= 40:
  print("D")
else:
  print("太笨了...E")

這裡有個問題,就是當我輸入95的時候 ,它列印的結果是A,但是95 明明也大於第二個條件elif score >=80:呀, 為什麼不列印B呢?這是因為程式碼是從上到下依次判斷,只要滿足一個,就不會再往下走啦,這一點一定要清楚呀!

相關文章