python教程6--自定義函式,資料型別轉換,解方程
阿新 • • 發佈:2019-01-08
本文主要講解點如下:
- 簡單函式
- 資料型別轉換
- 空函式
- 自定義絕對值函式
- 自定義函式 檢查引數型別
- 函式返回多個值
- 求解ax2 + bx + c = 0 的根
具體程式碼如下:
'函式相關'
__author__ = 'momo'
import sys
import math
# 簡單函式
print(abs(-12))
print(max(1,4,34,-23))
print(min(1,-3,-3,45,0))
print('----------------------')
print('----------------------')
print('----------------------' )
# 資料型別轉換
print(int('123'))
print(int(2.5435))
print(str(24))
print(str(34.33))
print('---------下面三個都是true-------------')
print(bool(1))
print(bool(-1))
print(bool('ss'))
print('----------下面三個都是false------------')
print(bool(0))
print(bool(''))
print(bool(None))
print('----------自定義函式------------')
# 空函式
def my_a(a):
if a < 5:
print('a<5')
else:
pass
my_a(21)
# 自定義絕對值函式
def my_abs(x):
if x >= 0:
print('是正數:', x)
else:
print('是負數', -x)
my_abs(-1)
# my_abs('12') TypeError: '>=' not supported between instances of 'str' and 'int'
print('----------自定義函式 檢查引數型別------------' )
def my_abs2(z):
if not isinstance(z,(int,float)):
raise TypeError("錯誤的資料型別")
if z <= 0:
return -z
else:
return z
print(my_abs2(-13))
# print(my_abs2("fs")) TypeError: 錯誤的資料型別
print('----------函式返回多個值------------')
# 一個函式返回多個值,實質上是返回了一個tuple,在語法上,返回一個tuple可以省略括號,多個變數可以同時接收一個tuple,按照位置順序對應賦值
def move(x,y,step,angle=0):
nx = x + step*math.cos(angle)
ny = y - step*math.sin(angle)
return nx,ny
a = move(100,100,60,math.pi/6)
print(a) # (151.96152422706632, 70.0)
x,y = move(100,100,60,math.pi/6)
print(x,y) # 151.96152422706632 70.0
# eg:返回list的長度
def testlist(a):
if not isinstance(a,list):
raise TypeError("引數型別錯誤")
if len(a) < 3:
return 'list太短了',len(a)
else:
return 'list太長了',len(a)
lista = [1,3,'aa','b']
mes,count = testlist(lista)
print(mes,count) # list太長了 4
print('--------------------')
# eg:定義函式,返回方程 ax2 + bx + c = 0 的根
print('----------求解ax2 + bx + c = 0 的根------------')
def my_quadratic(a,b,c):
if not isinstance(a,(int,float)):
raise TypeError('a is not a number,please try again')
if not isinstance(b,(int,float)):
raise TypeError('b is not a number,please try again')
if not isinstance(c,(int,float)):
raise TypeError('b is not a number,please try again')
d = b*b - 4*a*c
if d < 0:
return 'b*b-4*a*c= ',d,'<0,方程無解'
else:
if a == 0:
if b == 0:
if c == 0:
return '方程解為全體實數'
else:
return '方程無解'
else:
x1 = -c/b
x2 = x1
return x1,x2
else:
x1 = (-b + math.sqrt(d))/(2*a)
x2 = (-b - math.sqrt(d))/(2*a)
return x1,x2
print(my_quadratic(2,3,1)) # (-0.5, -1.0)
print(my_quadratic(1,3,-4)) # (1.0, -4.0)
print(my_quadratic(2,2,5)) # ('b*b-4*a*c= ', -36, '<0,方程無解')