1. 程式人生 > >python基礎5 if-else流程判斷,for循環和while循環

python基礎5 if-else流程判斷,for循環和while循環

代碼 整數和 data valid 語法錯誤 usr 定義 small 提示

本節主要內容:

  1. if-else流程判斷
  2. for循環
  3. while循環
  4. 參考網頁

if-else流程判斷

if 語句概述

計算機之所以能做很多自動化的任務,因為它可以自己做條件判斷。

比如,輸入用戶年齡,根據年齡打印不同的內容,在Python程序中,可以用if語句實現:

age = 20
if age >= 18:
    print ‘your age is‘, age
    print ‘adult‘
print ‘END‘

註意:

  1. Python代碼的縮進規則。具有相同縮進的代碼被視為代碼塊,上面的3,4行 print 語句就構成一個代碼塊(但不包括第5行的print)。如果 if 語句判斷為 True,就會執行這個代碼塊。

  2. 縮進請嚴格按照Python的習慣寫法:4個空格,不要使用Tab,更不要混合Tab和空格,否則很容易造成因為縮進引起的語法錯誤。

  3. if 語句後接表達式,然後用:表示代碼塊開始。

  4. 如果你在Python交互環境下敲代碼,還要特別留意縮進,並且退出縮進需要多敲一行回車:

  5. 不是每個if語句都要有else。

  6. if...else...邏輯是“非此即彼”的,要麽符合條件1,要麽符合條件2。else 後面有個“:”。


if 語句場景舉例

場景一、用戶登陸驗證

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Cathy Wu

# 提示輸入用戶名和密碼
  
# 驗證用戶名和密碼
#     如果錯誤,則輸出用戶名或密碼錯誤
#     如果成功,則輸出 歡迎,XXX!
 
#import getpass
_name = "Cathy"
_password = "123456"

username = input("username:")
password = input("password")
#password = getpass.getpass("password")

if username == _name and password == _password:
    print("welcome user {name} login ...".format(name=username))
else:
    print("invalid username or password!")

運行結果如下:

username:cathywu
password123
invalid username or password!

Process finished with exit code 0

場景二、猜年齡遊戲

在程序裏設定好你的年齡,然後啟動程序讓用戶猜測,用戶輸入後,根據他的輸入提示用戶輸入的是否正確,如果錯誤,提示是猜大了還是小了

my_age = 28
 
user_input = int(input("input your guess num:"))
 
if user_input == my_age:
    print("Congratulations, you got it !")
elif user_input < my_age:
    print("think bigger!")
else:
    print("think smaller!")

外層變量,可以被內層代碼使用.

內層變量,不應被外層代碼使用.

for循環

list或tuple可以表示一個有序集合。如果我們想依次訪問一個list中的每一個元素呢?比如 list:

L = [‘Adam‘, ‘Lisa‘, ‘Bart‘]
print L[0]
print L[1]
print L[2]

如果list只包含幾個元素,這樣寫還行,如果list包含1萬個元素,我們就不可能寫1萬行print。

這時,循環就派上用場了。

Python的 for 循環就可以依次把list或tuple的每個元素叠代出來:

L = [‘Adam‘, ‘Lisa‘, ‘Bart‘]
for name in L:
    print name

註意:

name 這個變量是在 for 循環中定義的,意思是,依次取出list中的每一個元素,並把元素賦值給 name,然後執行for循環體(就是縮進的代碼塊)。

這樣一來,遍歷一個list或tuple就非常容易了。

場景舉例

例子一

班裏考試後,老師要統計平均成績,已知4位同學的成績用list表示如下:

L = [75, 92, 59, 68]

請利用for循環計算出平均成績。

L = [75, 92, 59, 68]
sum = 0.0
for i in L:
    sum = sum + i
print sum / 4

例子二

打印0,2,4,6,8。

for i in range(0,10,2):
    print("loop",i)

while 循環

和 for 循環不同的另一種循環是 while 循環,while 循環不會叠代 list 或 tuple 的元素,而是根據表達式判斷循環是否結束。

比如要從 0 開始打印不大於 N 的整數:

N = 10
x = 0
while x < N:
    print x
    x = x + 1

while循環每次先判斷 x < N,如果為True,則執行循環體的代碼塊,否則,退出循環。

在循環體內,x = x + 1 會讓 x 不斷增加,最終因為 x < N 不成立而退出循環。

註意

如果沒有這一個語句,while循環在判斷 x < N 時總是為True,就會無限循環下去,變成死循環,所以要特別留意while循環的退出條件。

場景舉例

利用while循環計算100以內奇數的和。

sum = 0
x = 1
while x < 100:
    sum = sum + x
    x = x+2
print sum

break退出循環 和 continue繼續循環

break 退出循環

用 for 循環或者 while 循環時,如果要在循環體內直接退出循環,可以使用 break 語句。

舉例

例子一

比如計算1至100的整數和,我們用while來實現:

sum = 0
x = 1
while True:
    sum = sum + x
    x = x + 1
    if x > 100:
        break
print sum

咋一看, while True 就是一個死循環,但是在循環體內,我們還判斷了 x > 100 條件成立時,用break語句退出循環,這樣也可以實現循環的結束。

例子二

利用 while True 無限循環配合 break 語句,計算 1 + 2 + 4 + 8 + 16 + ... 的前20項的和。

sum = 0
x = 1
n = 1
while True:
    if n > 20:
        break
    sum = sum + x
    x= x * 2
    n= n + 1
print (sum)

continue繼續循環

在循環過程中,可以用break退出當前循環,還可以用continue跳過後續循環代碼,繼續下一次循環。

假設我們已經寫好了利用for循環計算平均分的代碼:

L = [75, 98, 59, 81, 66, 43, 69, 85]
sum = 0.0
n = 0
for x in L:
    sum = sum + x
    n = n + 1
print (sum / n)

現在老師只想統計及格分數的平均分,就要把 x < 60 的分數剔除掉,這時,利用 continue,可以做到當 x < 60的時候,不繼續執行循環體的後續代碼,直接進入下一次循環:

for x in L:
    if x < 60:
        continue
    sum = sum + x
    n = n + 1

例子

對已有的計算 0 - 100 的while循環進行改造,通過增加 continue 語句,使得只計算奇數的和:

sum = 0
x = 1
while True:
    sum = sum + x
    x = x + 1
    if x > 100:
        break
print sum

修改後如下:

sum = 0
x = 0
while True:
    x = x + 1
    if x > 100:
        break
    if x % 2 == 0:
        continue
    sum = sum + x
     
print (sum)

參考網頁

http://www.imooc.com/learn/177

http://www.cnblogs.com/alex3714/articles/5465198.html

python基礎5 if-else流程判斷,for循環和while循環