import math # å ç½®å½æ° abs(-200) max(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) # æ°æ®ç±»åè½¬æ¢ int('123') float('123.123') str(1.23) bool(1) bool('') a = abs x = a(123.45) print(x) n1 = 255 n2 = 1000 print(hex(n1)) def my_abs(x): if not isinstance(x, (int, float)): raise TypeError('x must be an integer or float') if x >= 0: return x else: return -x def nop(age): if age >= 18: pass def move(x, y, step, angle=0): nx = x + step * math.cos(angle) ny = y + step * math.sin(angle) return nx, ny r = move(100, 100, 60, math.pi / 6) def quadratic(a, b, c): if not isinstance(a * b * c, (float, int)): raise TypeError("quadratic must be a float or int") q = b ** 2 - 4 * a * c if q < 0: print('no solution') elif q == 0: print('æ¤æ¹ç¨çè§£æ¯å¯ä¸ç') x = (-b) / (2 * a) print(x) else: x1 = ((-b + math.sqrt(q)) / (2 * a)) x2 = ((-b - math.sqrt(q)) / (2 * a)) return x1, x2 def enroll(name, gender, age=6, city='Beijing'): pass def add_end(L=None): if L is None: L = [] L.append('END') return L # å¯ååæ° # å¯ååæ°å¨å½æ°è°ç¨æ¶èªå¨ç»è£ 为ä¸ä¸ªtuple def calc(*numbers): sum = 0 for n in numbers: sum += n ** 2 return sum nums = [1, 2, 3] calc(*nums) # å ³é®ååæ° # å è®¸ä½ ä¼ å ¥0个æä»»æä¸ªå«åæ°åçåæ°ï¼è¿äºå ³é®ååæ°å¨å½æ°å é¨èªå¨ç»è£ 为ä¸ä¸ªdict def person(name, age, **kw): print('name:', name, 'age:', age, 'other:', kw) person('Bob', 35, city='Beijing') # name: Bob age: 35 other: {'city': 'Beijing'} extra = {'city': 'Beijing', 'job': 'Engineer'} person('Bob', 35, **extra) # å½åå ³é®ååæ° # 彿°çè°ç¨è å¯ä»¥ä¼ å ¥ä»»æä¸åéå¶çå ³é®ååæ°, *åé¢çåæ°è¢«è§ä¸ºå½åå ³é®ååæ° def person_2(name, age, *, city='Beijing', job): print(name, age, city, job) # åæ°ç»å def f1(a, b, c=0, *args, **kw): print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw) # 使ç¨å½åå ³é®ååæ°æ¶ï¼è¦ç¹å«æ³¨æï¼å¦ææ²¡æå¯ååæ°ï¼å°±å¿ é¡»å ä¸ä¸ª*ä½ä¸ºç¹æ®åé符 def f2(a, b, c=0, d=1, *arg, e, **kw): print('a =', a, 'b =', b, 'c =', c, 'e =', e, 'kw =', kw, 'arg = ', arg) f2(1, 2, 3, 4, 56, 7, 8, 9, 0, e=4, f=9) # ç»ä¹ def mul(*numbers): if not len(numbers) == 0: sum = 1 for n in numbers: if not isinstance(n, (int, float)): continue # è·³åºæ¬æ¬¡å¾ªç¯ï¼æ§è¡ä¸æ¬¡å¾ªç¯ sum *= n return sum else: raise TypeError('numbers must be a list') # æµè¯ print('mul(5) =', mul(5)) print('mul(5, 6) =', mul(5, 6)) print('mul(5, 6, 7) =', mul(5, 6, 7)) print('mul(5, 6, 7, 9) =', mul(5, 6, 7, 9)) if mul(5) != 5: print('æµè¯å¤±è´¥!') elif mul(5, 6) != 30: print('æµè¯å¤±è´¥!') elif mul(5, 6, 7) != 210: print('æµè¯å¤±è´¥!') elif mul(5, 6, 7, 9, 'test') != 1890: print('æµè¯å¤±è´¥!') else: try: mul() print('æµè¯å¤±è´¥!') except TypeError: print('æµè¯æå!') # éå½ def fact_1(n): if n == 1: return 1 else: return n * fact(n - 1) # å°¾éå½ä¼å def fact(n): return fact_iter(n, 1) def fact_iter(num, product): if num == 1: return product return fact_iter(num - 1, num * product) print('fact_iter', fact(10)) # æ±è¯ºå¡é®é¢å®ç° # aåæ¾èµ·å§æ±ï¼båæ¾è¾ å©æ±ãcåæ¾ç®æ æ± def move(n, a, b, c): if n == 1: print(a, '--->', c) else: move(n - 1, a, c, b) # åå©cæç¬¬ num 个以å¤çåçä»aç§»å¨å°b move(1, a, b, c) # æç¬¬num个ä»aç§»å¨å°c move(n - 1, b, a, c) # åå©aæç¬¬ num 个以å¤çåçä»bç§»å¨å°c move(3, 'A', 'B', 'C') # è¿å彿° def lazy_sum(*args): def sum(): ax = 0 for n in args: ax = ax + n return ax return sum f = lazy_sum(1, 2, 3, 4, 5) print(f()) # éå def count(): fs = [] def f(j): def g(): return j * j return g for i in range(1, 4): fs.append(f(i)) return fs f1, f2, f3 = count() print(f1()) print(f2()) print(f3()) # ä¸ä¸ªå½æ°å¯ä»¥è¿åä¸ä¸ªè®¡ç®ç»æï¼ä¹å¯ä»¥è¿åä¸ä¸ªå½æ°ã # è¿åä¸ä¸ªå½æ°æ¶ï¼ç¢è®°è¯¥å½æ°å¹¶æªæ§è¡ï¼è¿å彿°ä¸ä¸è¦å¼ç¨ä»»ä½å¯è½ä¼ååçåéã def createCounter(): x = 0 def counter(): nonlocal x # 妿坹å¤å±åéèµå¼ï¼ç±äºPythonè§£éå¨ä¼æxå½ä½å½æ°fn()çå±é¨åéï¼å®ä¼æ¥éï¼ x = x + 1 return x return counter counterA = createCounter() print(counterA(), counterA(), counterA(), counterA(), counterA()) # lambdaå½å彿° def is_odd(n): return n % 2 == 1 L = list(filter(lambda n: n % 2 == 1, range(1, 20))) print(L)