math.gcd(x, y) 求 x 和 y
的最大公约数。如果 x 或 y 之一非零,则 gcd(x, y) 的值是能同时整除 a 和 b
的最大正整数,gcd(0, 0) 返回 0
math.factorial(x) 以一个整数返回 x
的阶乘。 如果 x 不是整数或为负数时则将引发 ValueError
1 2
print(math.gcd(2,4)) print(math.factorial(5))
2
120
math.isinf(x) 如果 x
是正或负无穷大,则返回 True ,否则返回 False
math.isnan(x) 如果 x
是正或负无穷大,则返回 True ,否则返回 False
math.isfinite(x) 如果 x
既不是无穷大也不是NaN,则返回 True ,否则返回 False "
2 数学运算
2.1 求 1+2+3+4+5+...+100
1 2 3 4 5 6 7 8 9 10
# 方法一:使用while循环
i = 0 s = 0
while i < 100: i += 1 s += i
print(s)
5050
1 2 3 4 5 6 7 8
# 方法二:使用for循环
s = 0
for i inrange(1,101): s += i
print(s)
5050
1 2 3 4 5
# 方法三:内置函数sum()
a = list(range(1,101)) sum_a = sum(a) print(sum_a)
5050
2.2 求 1 + 1/2 + 1/3 + ... + 1/100
1 2 3 4 5 6 7 8 9 10
# 方法一:使用while循环
i = 0 s = 0
while i < 100: i += 1 s += 1/i
print(s)
5.187377517639621
1 2 3 4 5 6 7
# 方法二:使用for循环
s = 0 for i inrange(1,101): s += 1/i
print(s)
5.187377517639621
1 2 3 4 5 6 7 8 9
# 方法三:使用for循环创建1/n列表
a = list(range(1,101)) b = [] for i in a: b.append(1/i)
sum_b = sum(b) print(sum_b)
5.187377517639621
1 2 3 4 5 6 7 8 9
# 方法四:使用自定义函数结合内置函数map()创建1/n列表
deff(x): return1/x
a = list(range(1,101)) b = list(map(f,a)) sum_b = sum(b) print(sum_b)
5.187377517639621
1 2 3 4 5 6
# 方法五:使用匿名函数结合内置函数map()创建1/n列表
a = list(range(1,101)) b = list(map(lambda x:1/x, a)) sum_b = sum(b) print(sum_b)
5.187377517639621
2.3 求 1 - 1/2 + 1/3 - 1/4 + ... -
1/100
1 2 3 4 5 6 7 8 9 10 11
# 方法一:以分母判断正负
s = 0
for i inrange(1,101): if i%2 == 1: s += 1/i elif i%2 == 0: s -= 1/i print(s)
0.688172179310195
1 2 3 4 5 6 7 8
# 方法二:以分子判断正负
s = 0
for i inrange(1,101): s += pow(-1,i+1)/i
print(s)
0.688172179310195
2.4 一元二次方程 y = ax**2 + bx +
c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
from math import sqrt
a = float(input('Enter a: ')) b = float(input('Enter b: ')) c = float(input('Enter c: '))
delt = pow(b,2) - 4*a*c
if delt > 0: x1 = (-b + sqrt(delt)) / (2*a) x2 = (-b - sqrt(delt)) / (2*a) print(f"There are two solutions: {x1} and {x2}.") elif delt == 0: print(f"There is only one solution: {x1}.") else: print("There is no solution.")
Enter a: 1
Enter b: 1
Enter c: -2
There are two solutions: 1.0 and -2.0.
2.5 其他
四个正整数1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
1 2 3 4 5 6 7 8 9 10 11 12 13 14
a = [1,2,3,4] b = [] count = 0
for i in a: for j in a: for k in a: if (i!=j) and (j!=k) and (i!=k): count += 1 num = i*100 + j*10 + k b.append(num) print("Total number:", count) print(b)