python3 的簡單練習
阿新 • • 發佈:2018-12-25
#!/usr/bin/env python3 # -*-coding:utf-8 -*- #chmod a+x hello.py ,這樣可以直接以./hello.py 的形式執行檔案 ######################################################## def weight(): h = input('please enter your height:') w = input('please enter your weight:') h = float(h) w = float(w) a = w/(h*h) if a<18.5: print('過輕') elif a >=18.5 and a <25: print('正常') elif a>=25 and a<28: print('過重') elif a>=28 and a<32: print('肥胖') elif a>32: print('嚴重肥胖') ######################################################## ######################################################## import math def my_abs(x): if not isinstance(x, (int, float)): raise TypeError('bad operand type') if x >=0: return x else: return -x def move(x, y, step, angle=0): nx = x + step*math.cos(angle) ny = y + step*math.sin(angle) return nx, ny print("絕對值函式:") n = my_abs(-20) print (n) x,y = move(100,100,60,math.pi/6) print("點以某個角度移動:") print(x,y) ######################################################## ######################################################## def quadratic(a,b,c): # a*x^2+b*x+c=0 , 一元二次方程的根 cc = (b*b - 4*a*c)/(4*a*a) c = math.sqrt(cc) #開跟 x1 = c - (b/(2*a)) x2 = -c - (b/(2*a)) return x1, x2 print("求一元二次方程的根") print (quadratic(2, 3, 1)) print (quadratic(1, 3, -4)) ######################################################## ######################################################## #計算某個數的 n 次方值,預設是平方 def power(x, n=2): s = 1 while n > 0: n = n - 1 s = s * x return s print("計算某個數的 n 次方值,預設是平方") print(power(5)) ######################################################## ######################################################## #a,b 是必選引數, c 是預設引數, args 是可變引數, kw 是關鍵字引數 def f1(a, b, c=0, *args, **kw): print('a=', a, 'b=', b, 'c=', c, 'args=', args, 'kw=', kw) #a,b 是必選引數, c是預設引數, d 是命名關鍵字引數(可選引數不存在的時候,前面加*), kw 是關鍵字引數 def f2(a, b, c=0, *, d, **kw): print('a=', a, 'b=', b, 'c=', c, 'd=', d, 'kw=', kw) args = (1,2,3,4) kw={'d':99, 'x':'#'} f1(*args, **kw) args=(1,2,3) kw={'d':99, 'x':'#'} f2(*args, **kw) ######################################################## ######################################################## #遞迴函式求 n!階乘 def fact(n): if n ==1: return 1 return n*fact(n-1) print(fact(5)) a = ['a', 'b', 'c', 'd'] print(a[0:3])#取出陣列中的前3個元素,從索引0開始到索引3結束,不包括3. a[-2]陣列倒數第二個元素 print('ABCDEFG'[:3])#去字串中前3個字元 ######################################################## ######################################################## #for in 迴圈迭代物件 d = {'a':1, 'b':2, 'c':3} for key in d: #遍歷字典中所有key,字典預設迭代的是 key; for value in d.values(),迭代 value; for k,v in d.items(),同時迭代key和 value print(key) for i, value in enumerate(['A', 'B', 'C']): print (i,value) ######################################################## ######################################################## #判斷一個物件是否可迭代 from collections import Iterable print(isinstance('abc', Iterable)) #True, 字串遍歷的是每一個字元 print(isinstance([1,2,3] Iterable)) #True print(isinstance(123, Iterable)) #False ######################################################## ######################################################## import os #[d for d in os.listdir('.')] #os.listdir 列出檔案和目錄 L = ['Hello', 'World', 'IBM', 'Apple'] #[s.lower() for s in L] #['hello', 'world', 'ibm', 'apple'] list 中所有字串變小寫 #高階函式 def f(x): return x*x #r = map(f, [1,2,3,4,5,6]) #map(a,b), a 是函式,b 是 Iterable #list(r) #[1,4,9,16,25,36] def is_odd(n): return n%2 == 1 #list(filter(is_odd, [1,2,3,4,5])) #結果:[1,3,5] #Python字串strip()方法返回從字串的開始和結束(預設空格字元)中刪除指定所有字元的字串的副本。e.strip("*") ########################################################