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() 超過了遞迴的最大深度報錯