第四周第17题
import decimal
import tqdm
def calculate_pi(iterations):
decimal.getcontext().prec = iterations + 2 # 设置精度
pi = decimal.Decimal(0)
for n in tqdm.tqdm(range(iterations), desc="计算进度", unit="项"):
term = decimal.Decimal((-1) ** n) / decimal.Decimal(2 * n + 1)
pi += term
pi *= 4
return pi
def simple_progress_bar(current, total):
bar_length = 50
progress = current / total
filled_length = int(bar_length * progress)
bar = '█' * filled_length + '-' * (bar_length - filled_length)
percent = progress * 100
print(f'\r|{bar}| {percent:.2f}%', end='', flush=True)
def calculate_pi_simple(iterations):
decimal.getcontext().prec = iterations + 2 # 设置精度
pi = decimal.Decimal(0)
for n in range(iterations):
simple_progress_bar(n + 1, iterations)
term = decimal.Decimal((-1) ** n) / decimal.Decimal(2 * n + 1)
pi += term
pi *= 4
print()
return pi
if name == "main":
iterations = 100000 # 迭代次数,可以根据需要调整
# 使用 tqdm 进度条
pi_tqdm = calculate_pi(iterations)
print(f"使用 tqdm 进度条计算的圆周率: {pi_tqdm}")
# 使用简单进度条
pi_simple = calculate_pi_simple(iterations)
print(f"使用简单进度条计算的圆周率: {pi_simple}")

浙公网安备 33010602011771号