### 几段说明浮点数计算误差的程序 ##### 加 0.1 重复 10 次 ##x = 0.0 ##n = 0 ##while n < 10 : ## x = x + 0.1 ## n = n + 1 ##print(x, x == 1.0) ###### 希望循环体执行 100 次。实际做多少次? ##s = 0.0 ##n = 0 ##while s < 10.0 : ## s = s + 0.1 ## n = n + 1 ##print("Iterating", n , "times.","s =", s) ##from math import sqrt ##def triangle(a, b, c): ## s = (a + b + c) / 2 ## area = sqrt(s * (s - a) * (s - b) * (s - c)) ## return area ## ##x = triangle(6, 8, 11) ##y = triangle(12, 17, 19) - triangle(4, 7, 9) ##z = triangle(3, 9, 7) * 4 ##print("Area of a triangle:", x) ##print("Area of a triangle with a hole:", y) ##print("Volume of a triangle prism:", z) ### return 语句可以包括任意复杂的表达式 ##from math import sqrt ##def triangle(a, b, c): ## s = (a + b + c) / 2 ## return sqrt(s * (s - a) * (s - b) * (s - c)) ### 检查参数的函数 ##from math import sqrt ##def triangle(a, b, c): ## if a > 0 and b > 0 and c > 0 and a+b > c and a+c > b and b+c > a : ## s = (a + b + c) / 2 ## return sqrt(s * (s - a) * (s - b) * (s - c)) ## else: ## return float("nan") ### 不返回值的函数 ##from math import sqrt ##def printTriangle(a, b, c): ## s = (a + b + c) / 2 ## area = sqrt(s * (s - a) * (s - b) * (s - c)) ## print("Area of triagnle:", area) ## ##printTriangle(6, 8, 11) ##printTriangle(4, 7, 9) ##printTriangle(12, 17, 19) ### 输出摄氏温度到华氏温度的转换表 ##def CtoF(begin, end, step) : ## for x in range(begin, end, step) : ## print(x, "->", x * 9 / 5 + 32) ### 计算阶乘的循环程序(包括函数定义) ##def fact(n) : ## prod = 1 ## for k in range(2, n+1) : ## prod = prod * k ## return prod ## ##for i in range(4): ## n = int(input("Next int:")) ## print(fact(n)) ### 递归定义的阶乘函数 ##def fact(n): ## if n == 0: ## return 1 ## else: ## return n * fact(n - 1) ### 求幂函数(尽可能减少乘法的次数,递归定义) ##def power(x, n): ## if n == 0: ## return 1 ## elif n == 1: ## return x ## elif n % 2 == 0: ## return power(x*x, n//2) ## else: ## return power(x, n-1)*x ## ##print(power(2.0, 1)) ##print(power(2.0, 5)) ##print(power(2.0, 15)) ### 求幂函数(尽可能减少乘法的次数) ##def power(x, n): ## p = 1 ## while n > 0: ## if n % 2 == 0: ## x *= x ## n //= 2 ## else: ## p *= x ## n -= 1 ## return p ## ##print(power(2.0, 1)) ##print(power(2.0, 5)) ##print(power(2.0, 15)) # maximum recursion depth < 1000 #### 语句/表达式不能跨越多行,出错的定义 ##from math import sqrt ##def triangle(a, b, c) : ## if a > 0 and b > 0 and c > 0 and a+b > c ## and a+c > b and b+c > a: ## s = (a + b + c) / 2 ## return sqrt(s * (s - a) * (s - b) * (s - c)) ## else: ## return float("nan") ### 多行形式的语句/表达式(括号不匹配时自动延伸) ##from math import sqrt ##def triangle(a, b, c) : ## if (a > 0 and b > 0 and c > 0 and a+b > c ## and a+c > b and b+c > a) : ## s = (a + b + c) / 2 ## return sqrt(s * (s - a) * (s - b) * (s - c)) ## else: ## return float("nan") ### 多行形式的语句/表达式(使用续行符号 \ ) ##from math import sqrt ##def triangle(a, b, c) : ## if a > 0 and b > 0 and c > 0 and a+b > c\ ## and a+c > b and b+c > a : ## s = (a + b + c) / 2 ## return sqrt(s * (s - a) * (s - b) * (s - c)) ## else: ## return float("nan")