python if語句語法

轉載http://blog.csdn.net/lynn_yan/article/details/5464911


條件語句

1)      if 語句

例子:

# 執行if語句內的程序

a = input("a:")

b = input("b:")

if(a > b):

print a, " > ", b

Note:如果是在pydev+eclipse下,運行然後輸入數字,打個回車就會出現“SyntaxError:unexpected EOF while parsing”,所以只能用raw_input來代替。原因是回車,編譯器都多讀一個/r,一般按回車後,shells 會輸入“/n”,但因爲Eclipse控制檯輸入的是“/r/n”,python就不能很好的識別,可以說這是Python的一個bug。

 

# 跳過if語句

a = input("a:")

b = input("b:")

if(a > b):

    print a, " > ", b

print a, " < ", b

 

# if else語句

a = input("a:")

b = input("b:")

if(a > b):

    print a, " > ", b

else:

print a, " < ", b

Note:input()he raw_input. Raw_input( )捕獲用戶的原始輸入,raw_input()函數的聲明如下所示:

Raw_input([prompt])->string,參數prompt是控制檯輸出的提示文字,提示用戶輸入。返回值爲字符串。如果輸入的是數字,返回的還是字符串。

Input( )支持用戶輸入數字或表達式,不支持輸入字符串。Input( )函數的聲明如下所示:

Input([prompt])->value。

2)      if…elif…else語句

例子:

# if elif else語句

score = raw_input("score:")

score=int(score)

if(score >= 90) and (score <= 100):

    print "A"

elif(score >= 80) and (score < 90):

    print "B"

elif(score >= 60) and (score < 80):

    print "C"

else:

    print "D"

3)      if語句的嵌套

編寫條件語句時,應該儘量避免使用嵌套語句。嵌套語句不便於閱讀,而且可能會忽略一些可能性。

例子:

x = -1

y = 99

if(x >= 0):

    if(x > 0):          #嵌套的if語句

        y = 1

    else:

        y = 0

else:

    y = -1

print "y =", y

輸出爲y=-1

4)      實現switch語句的功能

Python並沒有提供switch語句,Python可以通過字典實現switch語句的功能。

實現方法分兩步。首先,定義一個字典。字典是由鍵值對組成的集合。其次,調用字典的get()獲取相應的表達式。

例子:

from __future__ import division

x = 1

y = 2

operator = "/"

result = {

    "+" : x + y,

    "-" : x - y,

    "*" : x * y,

    "/" : x / y

}

print result.get(operator)          

輸出爲0.5

另一種使用switch分支語句的方案是創建一個switch類,處理程序的流程。

a)         創建一個switch類,該類繼承自Python的祖先類object。調用構造函數init( )初始化需要匹配的字符串,並需要定義兩個成員變量value和fall。Value用於存放需要匹配的字符串,fall用於記錄是否匹配成功,初始值爲false,標識匹配不成功。如果匹配成功,程序往後執行。

b)        定義一個match( )方法,該方法用於用於匹配case子句。這裏需要考慮三種情況:首先是匹配成功的情況,其次是匹配失敗的默認case子句,最後是case子句中沒有使用break中斷的情況。

c)         重寫__iter__( )方法,定義該方法後才能使switch類用於循環語句中。__iter__( )調用match( )方法進行匹配。通過yield保留字,使函數可以在循環中迭代。此外,調用StopIteration異常中斷循環。

d)        編寫調用代碼,在for…in…循環中使用switch類。

例子:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

 

class switch(object):

    def __init__(self, value):      # 初始化需要匹配的值value

        self.value = value

        self.fall = False           # 如果匹配到的case語句中沒有break,則fall爲true。

 

    def __iter__(self):

        yield self.match            # 調用match方法 返回一個生成器

        raise StopIteration         # StopIteration 異常來判斷for循環是否結束

 

    def match(self, *args):         # 模擬case子句的方法

        if self.fall or not args:   # 如果fall爲true,則繼續執行下面的case子句

                                    # 或case子句沒有匹配項,則流轉到默認分支。

            return True

        elif self.value in args:    # 匹配成功

            self.fall = True

            return True

        else:                       # 匹配失敗

            return False

 

operator = "+"

x = 1

y = 2

for case in switch(operator):        # switch只能用於for in循環中

    if case('+'):

        print x + y

        break

    if case('-'):

        print x - y

        break

    if case('*'):

        print x * y

        break

    if case('/'):

        print x / y

        break

    if case():                      # 默認分支

        print ""

輸出爲3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章