Python之旅——分支和循環

分支語句if

展示if分支最好的一個小程序就是將分數轉化成等級
由於是一個比較簡單的小程序,所以我們直接給出代碼:

score=int(input("請輸入成績: "))
if (90<=score<=100) :
    print('A')
# 100>=score>=90 也可以
if (80<=score<90) :
    print('B')
if (60<=score<80) :
    print('C')
if (0<=score<60) :
    print('D')
if (score<0 or score>100) :
    print("輸入錯誤!")

注意:

  • Py中可以存在連續不等式:100>=score>=90
  • 任何從鍵盤輸入得到的數據,注意要專門轉化爲相應的類型
  • C++:|| <==> Python:or

但是任何一個有編程基礎的同學都不會甘心於此
這種寫法ta不夠優美:這五個if語句是完全並列的,在執行程序的時候會分別進行不等式判斷
即使score滿足了其中一個條件,仍需要花費時間進行之後的if判斷,換而言之就是常數較大

在其他的語言中,我們使用if...else解決這個問題
同樣的,Py中也有if...else語句:

score=int(input("請輸入成績: "))
if (90<=score<=100) :
    print('A')
else :
    if (80<=score<90) :
        print('B')
    else :
        if (60<=score<80) :
            print('C')
        else :
            if (0<=score<60) :
                print('D')
            else :
                print("輸入錯誤!")

注意:

  • 縮進要優美而規整(這對於代碼風格詭譎且喜歡壓行的我來說太不友好了TwT)

有一說一,這個縮進屬實恐怖
估計開發Py的前輩也發現了這個可怕的事實,所以發明了一種不同於其他語言的分支語法
elifelif
實際上就是else+if,功能實現也非常簡單:

score=int(input("請輸入成績: "))
if (90<=score<=100) :
    print('A')
elif (80<=score<90) :
    print('B')
elif(60<=score<80) :
    print('C')
elif (0<=score<60) :
    print('D')
else :
    print("輸入錯誤!")

嗯~~~~,這樣就優美很多了嘛
這樣的語法充分體現了Py語言的兩大特點:簡潔&&可讀性高


三目運算符

還記得C++中的硃砂痣——三目預運算符——嘛?

int x=4,y=5;
int mx=(x>y) ? x : y;

實際上Py中也有類似的語法,我在初次看到ta的原型後不禁疑惑:這樣難道不是降低可讀性了嘛/笑哭
然而據說Py論壇中的大大們對此表現出了強烈的訴求,所以在2.5版本中,開發者加入了三目運算符:

語法:x if (條件) else y

滿足條件取x,否則取y

x,y=4,5
if (x > y) 
    mx = x
else
    mx = y

############

x,y=4,5
small = x if (x>y) else y

斷言assert

最後的最後,我們介紹一個if語句的親戚:斷言assert
當這個關鍵字後邊的條件爲假時,程序自動崩潰並拋出AssertionError的異常

一般來說,我們可以用ta在程序中插入檢查點,當需要確保程序中的某個條件一定爲真時程序才能正常工作,assert關鍵字就非常有用了
在這裏插入圖片描述


while循環

while 條件:
    循環體

for循環

Py的for循環比C++更加的靈活和強大

for 目標 in 表達式:
    循環體
# 表達式一般都是一個列表,列表的定義在下面會有展示

還是實際操作一下:
在這裏插入圖片描述

現在問題來啦:
如果我們要實現C++語言中for (int i=1;i<=n;i++)的功能,難道需要開一個長度爲n的列表嗎?
當然不用啦,這裏我們引入一個for循環的小夥伴:
rangerange

函數原型:
range([start,]stop[,step=1])range( [ start , ] stop [ , step = 1 ] )
再[]內部的內容可以省略
這個函數完整形式包括三個參數:起點,重點,步幅
一般地,步幅step默認爲1,起點start默認爲0
這個函數的作用就是生成一個從start到stop,公差爲step的數字列表

用法非常簡單:
在這裏插入圖片描述


最後獻上雜燴演示程序:

bingo='周杰倫'
print("Coco_T_最喜歡的歌星是誰呀~")
while 1 :
    ans=input()
    # str(input()) input默認返回的是str類型,所以不需要類型轉換
    if (ans == bingo) :
        break
    else :
        print('在猜猜啦')
print('哎呦~不錯哦')

(要命了,Py的思路和C++不一樣啊,看看下面這個程序,能想明白嗎)
在這裏插入圖片描述

發佈了956 篇原創文章 · 獲贊 211 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章