1. 程式人生 > >Python函式及練習題

Python函式及練習題

函式定義與使用

 1. 無引數的函式;
# # 定義函式, 並不會執行;
# def hello():
#     # 函式體
#     print("hello")
# # 呼叫函式
# hello()
# print(len("hello"))
# print()
# 2. 帶有引數的函式
def fun1(name):
    # name = "fentiao"
    # 定義函式時的變數稱為形式引數, 變數名可以任意起;
    print("hello %s" %(name))

fun1("fendai")     # 呼叫函式時的引數稱為實參, 該引數必須是實際存在的;


函式返回值與return語句

# length = len('hello')
# print(length)
# # 函式呼叫時一般有返回值;沒有返回值時, python中預設返回None;
# def hello():
#     print("hello")
# res = hello()
# print(res)
# def hello():
#     # return 返回的表示式或者變數
#     return "hello"
# res = hello()

# print(res)

return的應用

# 隨機生成20個學生的成績;
# 判斷這20個學生成績的等級;

import random
def get_level(score):
    if 90 < score <= 100:
        return 'A'
    elif 80 < score <= 90:
        return 'B'
    else:
        return 'C'
def main():
    for i in range(20):
        score = random.randint(1,100)
        print("成績為%s, 等級為%s" %(score,get_level(score)))
    # scores = []
    # # 生成所有的成績;
    # for count in range(20):
    #     scores.append(random.randint(1, 100))
    # # 根據所有的成績判斷等級;
    # for score in scores:
    #     print("成績為%s, 等級為%s" %(score,get_level(score)))

main()


None

# C: true, false
# python: True, False
# null,  nil, undefined
var = None
print(type(var))
a = print()
print(a)
print(a == None)
# 函式如果有返回值, 可以將函式賦值給一個變數;
m = max([1,2,3,4,5])

print(m)


返回值有多個

def fun(a):   # a = [34, 1, 2, 3, 4, 5, 6, 7, 2378]
    # 我接收一個列表, 求這個列表的最大值,平均值, 最小值;
    max_num  = max(a)
    min_num = min(a)
    avg_num = sum(a)/len(a)
    # python函式中, 只能返回一個值;
    # 如果非要返回多個值, 會把返回的值封裝為一個元組資料型別;
    return max_num, avg_num, min_num
variables  = fun([34, 1, 2, 3, 4, 5, 6, 7, 2378])

print(variables, type(variables))


形參_必選引數

def add(x, y, z):  # x=1, y=2
    return x + y + z

print(add(2,3,4))


形參_預設引數

# # 如果實參只有一個, x=。。。, y=2
# # 如果實參只有2個, x=2, y=3
# def mypow(x, y=2):
#     return x ** y
# print(mypow(2))
# print(mypow(2, 3))
# print內建函式, 預設的end='\n',進行換行, 當然可以指定end的值;
# print("hello")
# print("world")
# print("hello", end=',')

# print("world")

形參_可變引數

# 可變引數, *變數名;
# *args, args實質是一個元組;
def mySum(*args):
    print(args, type(args))
    return  sum(args)
print(mySum(1,2,3,4,5))
# 如果已經存在;列表, 但是要把列表的每一個元素作為引數, 可以直接*li進行解包;
# li = range(1,1001)
# li = (1,2,3)
li = {1,2,3}

print(mySum(*li))


形參_關鍵字引數

# **kwargs關鍵字引數; 接收的kwargs是字典型別;
def fun(**kwargs):
    print(kwargs, type(kwargs))
# fun(a=1, b=2)
# d = {
#      'a':1,
#      'b':2
#      }
# fun(**d)  # a=1,b=2
# <div id="s_tab"  width=100px  height=200px>網頁</div>
def make_html(label, value, **kwargs):
    s = ""
    for k,v in kwargs.items():
        s += " %s=%s" %(k,v)1
    html = "<%s %s>%s</%s>" %(label, s, value, label)
    return html

print(make_html("div", "網頁",id="s_tab",width=100, height=200)).


函式的作用域

# 作用域:
#   區域性作用域:
#   全域性作用域
# 全域性作用域:作用於整個指令碼
num = 10
print("out fun: id=", id(num))
def fun():
    # 區域性作用域, 在函式執行時生效, 函式執行結束則釋放;
    num = 2
    print("in fun: id=", id(num))
    print("in fun: num = %s" %(num))
fun()
print("out fun: num =%s" %(num))

#1.  num = 10
#2. fun
#3. num = 2(當函式執行結束, 變數num的值2被釋放掉)

#4. num = 10


global關鍵字

num = 10
def fun():
    # 通過global關鍵字宣告區域性變數為全域性變數, 讓函式執行完, 2依舊生效;
    global num
    num = 2
fun()

print(num)


引數檢測

# 引數檢測
isinstance(1, int)
True
isinstance(1.0, float)
True
isinstance(2+3j, float)
False
isinstance(2+3j, tuple)
False
isinstance(1, (int, float, long, complex))
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'long' is not defined
isinstance(1, (int, float,complex))
True

def add(x:int, y:int)->int:

"""

    add: sum x and y
    :param x: int,float,.....
    :param y: int,float.....
    :return: int
    """
    if isinstance(x,(int,float,complex)) and isinstance(y,(int,float,complex)):
        return x + y
    else:
        print("Error")
# res = add("hello", 2)
# print(res)
help(add)
# *args, **kwargs
def fun(d=2, c=3):

    pass


函式引數的順序

# 必選,>  預設,>  可變,>  關鍵字
def fun( num1, num2=3, *args, **kwargs):

    pass

引數易錯點

# 定義函式, 預設引數的預設值儘量不是可變引數;
def fun(li=[]):
    li.append("hello")
    return li
print(fun())

print(fun())


迭代

# iterable: 可迭代的; 可以for迴圈;
# s = "hello"
# # for(int i=0, i<length(s); i++)
s = 'hello'
for i in s:
    print(i)
from collections import Iterable
isinstance(1, int)
print(isinstance(1,Iterable))
print(isinstance({1,2,3},Iterable))

print(reversed([1,2,3,4]))


函式練習

1.平方等式題目需求:

    對於一個十進位制的正整數, 定義f(n)為其各位數字的平方和,如:
    f(13) = 1**2 + 3**2 = 10
    f(207) = 2**2 + 0**2 + 7**2 = 53
    下面給出三個正整數k,a, b,你需要計算有多少個正整數n滿足a<=n<=b,
    且k*f(n)=n
輸入:
    第一行包含3個正整數k,a, b, k>=1,  a,b<=10**18, a<=b;
輸出:
    輸出對應的答案;
範例:
    輸入: 51 5000 10000
    輸出: 3
# k*f(n)=n

def f(n):
    res = 0
    for item in str(n):
        res += int(item) ** 2
    return res
def isOk(k, n):
    if k * f(n) == n:
        return True
    else:
        return False
def main():
    k = 51
    a = 5000
    b = 10000
    count = 0
    for i in range(a, b + 1):
        if isOk(k, i):
            count += 1
    print(count)

main()


2.Collatz序列
編寫一個名為collatz()的函式,它有一個名為number的引數。
如果引數是偶數,那麼collatz()就打印出number//2,並返回
該值。如果number是奇數,collatz()就列印並返回3*number+1。
然後編寫一個程式,讓使用者輸入一個整數,並不斷對這個數
呼叫collatz(),直到函式返回值1(令人驚奇的是,這個序列
對於任何整數都有效,利用這個序列,你遲早會得到1!既使數學
家也不能確定為什麼。你的程式在研究所謂的“Collatz序列”,
它有時候被稱為“最簡單的、不可能的數學問題”)。
- 輸入:
    3
- 輸出:
    10
    5
    16
    8
    4
    2
    1

# def collatz(number):
#     # 為偶數
#     if number % 2 == 0:
#         return number // 2
#     else:
#         return 3 * number + 1
# def main():
#     num = int(input('Num:'))  # 3
#     while True:
#         if collatz(num) == 1:  # collatz(3) 3, 10, 2
#             print(1)
#             break
#         else:
#             num = collatz(num)
#             print(num)
# main()

def collatz(number):
    if number == 1:
        exit(0)
    elif number %2 == 0:
        return number // 2
    else:
        return 3 * number + 1
num = int(input('Num:'))
while True:
    num = collatz(num)

    print(num)


3.(華為機試練習)題目描述
資料表記錄包含表索引和數值,請對錶索引相同的記錄進行合併,即將相同索引的數值進行求和運算,輸出按照key值升序進行輸出。
- 輸入描述:先輸入鍵值對的個數,然後輸入成對的index和value值,以空格隔開
- 輸出描述:輸出合併後的鍵值對(多行)
- 示例1
輸入
4
0 1
0 2
1 2
3 4
輸出
0 3
1 2

3 4


4.(華為)題目描述

將一個英文語句以單詞為單位逆序排放。例如“I am a boy”,逆序排放後為“boy a am I”
所有單詞之間用一個空格隔開,語句中除了英文字母外,不再包含其他字元
- 輸入描述:將一個英文語句以單詞為單位逆序排放。
- 輸出描述:得到逆序的句子
示例1
- 輸入
I am a boy
- 輸出

boy a am I

s = input('s:')

print(" ".join(s.split()[::-1]))


相關推薦

Python函式練習題

函式定義與使用 1. 無引數的函式;# # 定義函式, 並不會執行;# def hello():#     # 函式體#     print("hello")# # 呼叫函式# hello()# print(len("hello"))# print()# 2. 帶有引數的函式

C++呼叫 python 函式返回值的處理【元組,字串...】

http://www.cnblogs.com/DxSoft/archive/2011/04/01/2002676.html Python 指令碼  py_test.py : #coding:utf-8 def get_int( ): a = 10 b =

the c programming language second edition 第四章函式與程式結構筆記練習題

the c programming language second edition 第四章函式與程式結構筆記 4.3外部變數 C語言程式可以看成由一系列的外部物件構成,這些外部物件可能是變數或函式 外部變數和函式具有以下性質:通過同一個名字對外部變數的所有引

the c programming language second edition 第四章函式與程式結構筆記練習題

the c programming language second edition 第四章函式與程式結構筆記 4.1函式的基本認識 編寫一個程式它將輸入中包含特定模式或字串的各行打印出來。 該任務可以明確地劃分成下列3部分: while(未處理的行) if

[Python隨筆]Python函式命名-PEP8編碼規範的說明IDE提示的忽略

對IDE提示的好奇 在使用Python程式設計時,某函式setMainFrameColor()出現了黃色下劃線並有以下資訊 Function name should be lowercase less… (Ctrl+F1) Inspection info: This inspec

python - 函式的相互呼叫 變數的作用域

# -*- coding:utf-8 -*-'''@project: jiaxy@author: Jimmy@file: study_函式的相互呼叫及變數的作用域.py@ide: PyCharm Community Edition@time: 2018-11-10 10:04@blog: https://ww

python學習筆記: round()函式相關

一、round(x [ , n ]):返回x(可以為數值或運算表示式)的四捨五入值,保留n位小數。 Note1 :當小數點後正好為5時,round(X.5)=X或者X+1(trap!) ***在python2.7的doc中,round()的最後寫著,“Values are rounded t

Python 中 property() 函式 @property 裝飾器的使用

Python 中 property() 函式及 @property 裝飾器的使用 文章目錄 Python 中 property() 函式及 @property 裝飾器的使用 0. 參考資料 1. property 應用場景 2.

Python函式中多型別傳值和冗餘引數函式的遞迴呼叫

1.多型別傳值和冗餘引數 多型別傳值: def fun(x,y): return x +y print fun(3,5) 8 print fun(*t) 3 def fun(x,y,z): return x + y + z t1 = (1,2,3)

python 函式的定義呼叫語法,map 方法

1.什麼是函式    開發程式時候,需要程式碼執行多次,為了提高編寫效率及程式碼重用性,所以把具有獨立功能的程式碼塊組織為一個小模組,給這個功能一個名稱,這就是函式。    函式可以使用系統自帶的函式也可以自定義函式   &nbs

Oracle儲存過程函式練習題

--儲存過程、函式練習題 --(1)建立一個儲存過程,以員工號為引數,輸出該員工的工資create or replace procedure p_sxt1(v_empno in emp.empno%type, v_sal out emp.sal%type) isbegin select sal into v_

python函式的介紹應用(意為理解)

區域性變數 區域性變數,就是在函式內部定義的變數 其作用範圍是這個函式內部,即只能在這個函式中使用,在函式的外部是不能使用的 因為其作用範圍只是在自己的函式內部,所以不同的函式可以定義相同名字的區域性變數(打個比方,把你、我是當做成函式,把區域性變數理解為每個人手裡的手

Python+Selenium WebDriver API:瀏覽器元素的常用函式變數整理總結

      由於網頁自動化要操作瀏覽器以及瀏覽器頁面元素,這裡筆者就將瀏覽器及頁面元素常用的函式及變數整理總結一下,以供讀者在編寫網頁自動化測試時查閱。 from selenium import webdriver driver=webdriver.Firefox()

Python 函式定義呼叫(1)

1、函式的功能: (1)程式碼的一種組織形式; (2)一個函式一般完成一項特定的功能。 2、函式使用 (1)函式需要先定義 (2)使用函式,俗稱呼叫 3、函式定義的一般規則 (1)def 關鍵字,後跟一個空格; (2)函式名,自己定義,起名需要遵循

Python 函式定義呼叫(2)——引數詳解

目錄 一、函式的引數和返回值 (1)引數: 負責給函式傳遞一些必要的資料或者資訊 形參(形式引數): 在函式定義的時候用到的引數沒有具體值,只是一個佔位的符號,成為形參; 實參(實際引數): 在呼叫函式的時候輸入的值。 (2)返回值: 函式

Python連線Oracle/Oracle自定義函式函式的呼叫

# Python 連線 Oracle Python自帶的模組中有很多操縱檔案的。我們可以把檔案的資料讀出來,經過處理還可以將資料寫入檔案中。但是對於資料的管理和分析來說,資料庫還是專業一些。如果Python能和資料庫結合在一起,那麼就能結合兩種的優勢,提高效率。

python函式引數定義解析(包含帶星號引數)

前言:python中函式引數的傳遞是通過賦值來傳遞的。函式的引數有兩個方面值得注意: 1.函式引數是如何定義的 2.在呼叫函式的過程中引數是如何被解析的 python函式引數的定義方式 func(arg1, arg2, …) 這是最常見的定義方式,一個函式

python 函式的名稱空間作用域

一:名稱空間 1:什麼是名稱空間:   名稱空間即:儲存名字與值的記憶體地址關聯關係的空間 2.名稱空間的分類:   內建名稱空間:儲存器自帶的一些名稱與值的對應關係,如:print,len,max等;     生命週期為:在python直譯器啟動時建立,在直譯器關閉時銷燬   全域性名稱空間:除

python內建函式匿名函式

locals  本地作用域/區域性作用域 會隨著位置的改變而改變globals 全域性作用域           永遠不變 永遠是全域性 a = 1 b = 2 print(locals())

python遞迴函式二分法查詢

函式的遞迴: 在一個函式的內部呼叫自己 死迴圈: 可以無限迴圈,不會停止 while True: print('我不是遞迴') 遞迴: 不是死迴圈,有最大迴圈深度 def story(): print('我是遞迴') story() story() 超過了遞迴的最大深度報錯