1. 程式人生 > >python基礎一(2)

python基礎一(2)

---恢復內容開始---

9,格式化輸出。

現有一練習需求,問使用者的姓名、年齡、工作、愛好 ,然後列印成以下格式

------------ info of Alex Li -----------
Name  : Alex Li
Age   : 22
job   : Teacher
Hobbie: girl
------------- end ----------------

 

你怎麼實現呢?你會發現,用字元拼接的方式還難實現這種格式的輸出,所以一起來學一下新姿勢

只需要把要列印的格式先準備好, 由於裡面的 一些資訊是需要使用者輸入的,你沒辦法預設知道,因此可以先放置個佔位符,再把字串裡的佔位符與外部的變數做個對映關係就好啦

name = input("Name:")
age = input("Age:")
job = input("Job:")
hobbie = input("Hobbie:")

info = '''
------------ info of %s ----------- #這裡的每個%s就是一個佔位符,本行的代表 後面拓號裡的 name 
Name  : %s  #代表 name 
Age   : %s  #代表 age  
job   : %s  #代表 job 
Hobbie: %s  #代表 hobbie 
------------- end -----------------
''' %(name,name,age,job,hobbie) # 這行的 % 號就是 把前面的字串 與拓號 後面的 變數 關聯起來 print(info)
name = input('請輸入您的名字')
 age = input("請輸入年齡")
 job = input('職業')
 hobby = input('愛好')
 msg = """----------information of %s-----------
 name:%s
 age:%s
 job:%s
 hobby:%s
 ---------end------------"""%(name, name, age, job, hobby)
print(msg)

 

 

%s就是代表字串佔位符,除此之外,還有%d,是數字佔位符, 如果把上面的age後面的換成%d,就代表你必須只能輸入我們執行一下,但是發現出錯了。。。

%d = '數字佔位符'
$s = '字元佔位符'

 

說%d需要一個數字,而不是str, what? 我們明明輸入的是數字呀,22,22呀。

不用擔心 ,不要相信你的眼睛我們除錯一下,看看輸入的到底是不是數字呢?怎麼看呢?檢視資料型別的方法是什麼來著?type()

name = input("Name:")
age = input("Age:")
print(type(age))

執行輸出是

Name:Alex
Age:22
<class 'str'> #怎麼會是str
Job:IT

讓我大聲告訴你,input接收的所有輸入預設都是字串格式!

要想程式不出錯,那怎麼辦呢?簡單,你可以把str轉成int

age = int(  input("Age:")  )
print(type(age))

肯定沒問題了。相反,能不能把字串轉成數字呢?必然可以,str( yourStr )

問題:現在有這麼行程式碼

msg = "我是%s,年齡%d,目前學習進度為8%"%('panky',18)
print(msg)

 

這樣會報錯的,因為在格式化輸出裡,你出現%預設為就是佔位符的%,但是我想在上面一條語句中最後的80%就是表示80%而不是佔位符,怎麼辦?

msg = "我是%s,年齡%d,目前學習進度為8%%"%('panky',18)
print(msg)

 

這樣就可以了,第一個%是對第二個%的轉譯,告訴Python直譯器這只是一個單純的%,而不是佔位符。

10,基本運算子。

運算子

  計算機可以進行的運算有很多種,可不只加減乘除這麼簡單,運算按種類可分為算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算,今天我們暫只學習算數運算、比較運算、邏輯運算、賦值運算、成員運算

算數運算

以下假設變數:a=10,b=20

比較運算

以下假設變數:a=10,b=20

賦值運算

以下假設變數:a=10,b=20

邏輯運算

針對邏輯運算的進一步研究:

  1,在沒有()的情況下not 優先順序高於 and,and優先順序高於or,即優先順序關係為( )>not>and>or,同一優先順序從左往右計算。

例題:

判斷下列邏輯語句的True,False。

複製程式碼
1,3>4 or 4<3 and 1==1
2,1 < 2 and 3 < 4 or 1>2 
3,2 > 1 and 3 < 4 or 4 > 5 and 2 < 1
4,1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8
5,1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
6,not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
複製程式碼

  2 ,  x or y , x為真,值就是x,x為假,值是y;

             x and y, x為真,值是y,x為假,值是x。

 

例題:求出下列邏輯語句的值。

print(8 or 4)
print(0 and 3)
print(0 or 4 and 3 or 7 or 9 and 6)

 

成員運算:

除了以上的一些運算子之外,Python還支援成員運算子,測試例項中包含了一系列的成員,包括字串,列表或元組。

判斷子元素是否在原字串(字典,列表,集合)中:

例如:

print('dk-f' in 'dkfljadklf喜歡hfjdkas')
print('a' in 'bcvd')
print('y' not in 'ofkjdslaf')

 

Python運算子優先順序

以下表格列出了從最高到最低優先順序的所有運算子:

運算子 描述
** 指數 (最高優先順序)
~ + - 按位翻轉, 一元加號和減號 (最後兩個的方法名為 [email protected][email protected])
* / % // 乘,除,取模和取整除
+ - 加法減法
>> << 右移,左移運算子
& 位 'AND'
^ | 位運算子
<= < > >= 比較運算子
<> == != 等於運算子
= %= /= //= -= += *= **= 賦值運算子
is is not 身份運算子
in not in 成員運算子
not and or 邏輯運算子

11,流程控制之--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呢?這是因為程式碼是從上到下依次判斷,只要滿足一個,就不會再往下走啦,這一點一定要清楚呀!

12,流程控制之--while迴圈。

12.1,基本迴圈

  while  條件:            # 迴圈體        # 如果條件為真,那麼迴圈體則執行      # 如果條件為假,那麼迴圈體不執行

12.2,迴圈中止語句 

如果在迴圈的過程中,因為某些原因,你不想繼續迴圈了,怎麼把它中止掉呢?這就用到break 或 continue 語句

  • break用於完全結束一個迴圈,跳出迴圈體執行迴圈後面的語句
  • continue和break有點類似,區別在於continue只是終止本次迴圈,接著還執行後面的迴圈,break則完全終止迴圈

例子:break

count = 0
while count <= 100 : #只要count<=100就不斷執行下面的程式碼
    print("loop ", count)
    if count == 5:
        break
    count +=1 #每執行一次,就把count+1,要不然就變成死迴圈啦,因為count一直是0

print("-----out of while loop ------")

 

輸出

loop  0
loop  1
loop  2
loop  3
loop  4
loop  5
-----out of while loop ------

 

例子:continue

count = 0
while count <= 100 : 
    count += 1
    if count > 5 and count < 95: #只要count在6-94之間,就不走下面的print語句,直接進入下一次loop
        continue 
    print("loop ", count)

print("-----out of while loop ------")

 

輸出

loop  1
loop  2
loop  3
loop  4
loop  5
loop  95
loop  96
loop  97
loop  98
loop  99
loop  100
loop  101
-----out of while loop ------

 

12.3,while ... else ..

與其它語言else 一般只與if 搭配不同,在Python 中還有個while ...else 語句

while 後面的else 作用是指,當while 迴圈正常執行完,中間沒有被break 中止的話,就會執行else後面的語句

count = 0
while count <= 5 :
    count += 1
    print("Loop",count)

else:
    print("迴圈正常執行完啦")
print("-----out of while loop ------")

 

輸出

Loop 1
Loop 2
Loop 3
Loop 4
Loop 5
Loop 6
迴圈正常執行完啦
-----out of while loop ------

 

如果執行過程中被break啦,就不會執行else的語句啦

count = 0
while count <= 5 :
    count += 1
    if count == 3:break
    print("Loop",count)

else:
    print("迴圈正常執行完啦")
print("-----out of while loop ------")

 

輸出

Loop 1
Loop 2
-----out of while loop ------

 

四,相關練習題。

1、使用while迴圈輸入 1 2 3 4 5 6     8 9 10

2、求1-100的所有數的和

3、輸出 1-100 內的所有奇數

4、輸出 1-100 內的所有偶數

5、求1-2+3-4+5 ... 99的所有數的和

6、使用者登陸(三次機會重試)

---恢復內容結束---