正剧开始:
(续前节)
星历2016年04月19日 09:02:47, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起研究[例题]。
<span style="font-size:18px;">#例1 def prime(x): if x < 2: return False; for i in range(2, math.ceil(x**0.5)+1): if (i != x) and (x%i==0): return False; return True; #例2 def fun(x): return x**2-2; def bisection(xMin, xMax): if fun(xMin)*fun(xMax) > 0: return float('inf'); elif fun(xMin) == 0: return xMin; elif fun(xMax) == 0: return xMax; else: epsilon = 10e-6; while (abs(xMin-xMax)> epsilon): xMid = (xMin+xMax)/2; if (fun(xMid)*fun(xMin)< 0): xMax = xMid; elif (fun(xMid)*fun(xMax) < 0): xMin = xMid; else: return xMid; return xMid; #例3 def HQFormula(a, b, c): p = (a+b+c)/2; S = math.sqrt(p*(p-a)*(p-b)*(p-c)); return S; #例4 def validTriangle(a, b, c): if (a <= 0 or b <= 0 or c <= 0): return False; array = sorted([a, b, c]); if (array[-1] >= array[0] + array[1]): return False; return True; #例5 def quadratic(a, b, c): if a == 0 and b == 0: if c != 0: return ['nul']; else: return ['R']; elif a == 0 and b != 0: return [-c/b]; else: delta = (b**2-4*a*c); if (delta == 0): return [-b/(2*a)]; elif (delta > 0): delta = delta**0.5; return [(-b-delta)/(2*a), (-b+delta)/(2*a)]; else: return ['nul']; #例6 def sum100(N): result = 0; for i in range(1, N+1): result += i; return result; </span>
<span style="font-size:18px;">#例7 def fun7(): product = 200; year = 2005; while (product <= 300): product *= 1.05; year += 1; return year; #例1 def funSketch(x): return x**3+3*x**2-24*x+30; def sketch(): array = []; for i in range(-5, 6): array.append(funSketch(i)); return array; #例2 def average(literature, math, english): return (literature + math + english)/3; #例3 def assign(x, num): return num; #例4 def swap(A, B): return [B, A]; #例5 def fun5(x): return abs(x);</span>
<span style="font-size:18px;">#例6 def fun6(): inputs = input('输入a, b, c, 逗号隔开: ').split(','); a = float(inputs[0]); b = float(inputs[1]); c = float(inputs[2]); delta = b**2-4*a*c; if (delta >= 0): p = -b/(2*a); q = delta**0.5/(2*a); if (delta == 0): print(p); else: x1 = p+q; x2 = p-q; print(x1, x2); else: print('方程没有实数根');</span>
<span style="font-size:18px;">#例7 def sortNumber(): inputs = input('输入a, b, c, 逗号隔开: ').split(','); a = float(inputs[0]); b = float(inputs[1]); c = float(inputs[2]); array = [a, b, c]; array = sorted(array, reverse=True); return array; #例8 def funSketch(x): return x**3+3*x**2-24*x+30; def sketch(): array = []; for i in range(-5, 6): array.append(funSketch(i)); return array; #例1 def gcd(m, n): m, n = max(m, n), min(m, n); i = 1; while n: print('step', i, ': ', m, n); i += 1; m, n = n, m % n return m #例2 def poly(x, coef): #coef为多项式按次数从高到低排列的系数矩阵 rank = len(coef); result = 0; for i in range(rank): result *= x; result += coef[i]; return result; #例3 def binToDec(s): sum = 0; for i in range(len(s)): sum *= 2; sum += int(s[i]); return sum; #例4 def kToDec(s, k): #s为k进制数的字符串形式,k为进制,如2, 8, 10, 16等 charTable = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; sum = 0; if k > 32: return 'inf'; for i in range(len(s)): sum *= k; for j in range(k): if s[i] == charTable[j]: sum += j; break; return sum; #例5, 6 def dec2k(N, k): s = ''; a = []; #只提供了36进制数以内的唯一表示对照表 if k > 36: return ''; charTable = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; a.append(N%k); N//=k; while N > 0: a.append(N%k); N//=k; size = len(a); for i in range(size): s += charTable[a[size-i-1]]; return s; </span>
<span style="font-size:18px;">>>> 0.8765 #例2 def fun2(): yes = 0; no = 0; N = 10000; for i in range(N): time_1 = 6.5+random.random(); time_2 = 7 + random.random(); if (time_1 < time_2): yes+=1; else: no+=1; return yes/N; >>> 3.1388 #例3 def fun3(): yes = 0; no = 0; N = 10000; for i in range(N): x = random.random()-0.5; y = random.random()-0.5; if (x**2+y**2<=0.5**2): yes+=1; else: no+=1; return yes/N*4; >>> 1.332 #例4 def fun4(): yes = 0; no = 0; N = 10000; for i in range(N): x = 2*(random.random()-0.5); y = random.random(); if (y >= x**2): yes+=1; else: no+=1; return yes/N*2; </span>