1. 程式人生 > >python3 的簡單練習

python3 的簡單練習

#!/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("*")
########################################################