1. 程式人生 > >python教程6--自定義函式,資料型別轉換,解方程

python教程6--自定義函式,資料型別轉換,解方程

本文主要講解點如下:

  • 簡單函式
  • 資料型別轉換
  • 空函式
  • 自定義絕對值函式
  • 自定義函式 檢查引數型別
  • 函式返回多個值
  • 求解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,方程無解')