python二之函數細節

  說起來,函數其實就是簡化了需要重複使用某片代碼時重寫的麻煩。換做我原來的理解,總是認爲函數就是將原本意思的代碼片給簡化了,其實不是,若在一個程序中,暫時只用到了一次這個代碼片,那麼我們也需要把這片代碼該表達的意思都碼出來。例如我們最常舉的例子加法,寫出一個函數,是什麼樣子呢?
def sum(x,y,z):
  s=x+y+z
  return s
r=sum(1,2,3)
print r

就像上述函數,單純的看這個函數,一點也沒覺得這裏簡單了什麼,所以函數在只使用一次的時候,我們並不覺得簡化了什麼,因此,該寫什麼就要寫什麼。(我最初總是覺得該省略很多語句),例如下述語句,我最初覺得應該把while語句給省略了,寫點別的什麼東西,然而省略的話就啥也沒了,,

#coding:utf-8
print"累加1~100"
def sum(n):
      sum = 0
i = 0
while i<= n:
    sum+=i
    i+=1
    return sum
x = input("請輸入一個數:")
s=sum(x)
print s


隨後是一些自己加深練習的代碼片:

def xian():
    print"------"
    print"第一條線"
    hua(x)  #必須加里面的參數x
def hua(x):
    a=1
    while a<=x:
           print"---------"
           a=a+1
x=input("輸入你想要的線數")
xian()

這裏用到啦函數的嵌套,其中調用函數時,如若函數有參數,我們調用的時候是不能忽略參數的。

函數先求和,再求平均值。

#coding:utf-8
def sum(x,y,z):
  s=x+y+z
  return s
r=sum(1,2,3)
print r
def ping(a,b,c): 
  global r  #此處r不需要定義全局變量,我只是試試
  r=sum(a,b,c)
  ping=r/3.0
  return ping
a=input("請輸入a的值:")
b=input("請輸入b的值:")
c=input("請輸入c的值:")
print("%s"%ping(a,b,c))


附貼一個函數關於名片的全套操作。這是最基礎的簡單的嵌套。可以看到裏面的Input爲raw_input,

coding:utf-8

card_infors = []
def print_menu():
 """ 完成打印功能菜單"""
 print("="*50)
 print(" 名片管理系統V0.01")
 print("1.添加一個新的名片")
 print("2.刪除一個名片")
 print("3.修改一個名片")
 print("4.查詢一個名片")
 print("5.顯示所有的名片")
 print("6.退出系統")
 print("="*50)

def add_new_card():
 new_name =raw_input("請輸入新的姓名:")
 new_qq = raw_input("請輸入新的qq:")
 new_weixin = raw_input("請輸入新的微信:")
 new_addr = raw_input("請輸入新的地址:")
   
        new_infor = {}
        new_infor['name']=new_name
        new_infor['qq']=new_qq
        new_infor['weixin']=new_weixin
        new_infor['Addr']=new_addr

        global card_infors
        card_infors.append(new_infor)

def find_card_infor():
 global card_infors

 find_name = raw_input("請輸入要查找的姓名:")
        find_flag = 0
        for temp in card_infors:
        if find_name == temp["name"]:
                print("%s\t%s\t%s\t%s"%(temp['name'], temp['qq'], temp['weixin'], temp['addr']))
                find_flag=1
                break
        if find_flag == 0:
         print("查無此人....")

def show_all_infor():

    global card_infors

    print("姓名\tQQ\t微信\t住址")
    for temp in card_infors:
        print("%s\t%s\t%s\t%s"%(temp['name'], temp['qq'], temp['weixin'], temp['addr']))
def main():
    print_menu()

    while True:
        num = int(input("請輸入操作序號:"))
        if num==1:
            add_new_card()
        elif num==2:
            pass
        elif num==3:
            pass
        elif num==4:
            find_card_infor()
        elif num==5:
            show_all_infor()
        elif num==6:
            break
        else:
            print("輸入有誤,請重新輸入")


print("")
main()

總結:1.格式 2.調用時勿忘參數  3.用input的時候要輸入文字的時候記得改成raw_input  4.函數中可以出現多條return語句,但是每個函數只執行一次return,執行完即相當於退出函數 




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