分支語句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的前輩也發現了這個可怕的事實,所以發明了一種不同於其他語言的分支語法:
實際上就是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循環的小夥伴:
函數原型:
再[]內部的內容可以省略
這個函數完整形式包括三個參數:起點,重點,步幅
一般地,步幅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++不一樣啊,看看下面這個程序,能想明白嗎)