Python编写等差数列(PA)程序 查询额外项首次正常后续无输出如何解决
问题根因
- 计数变量
cont的判断逻辑有误:首次查询额外项后,cont已经累加到10 + 首次输入的项数,后续再次查询时,判断条件仍使用cont <= 10 + 新输入项数,此时cont已经远大于右侧的计算值,内层循环不会执行,因此无输出。 - 初始打印前10项的逻辑存在偏差:原有代码在打印前先执行了
t1 = t1 + r,会导致输出的首个值是等差数列的第二项,遗漏了用户输入的首项。
修复方案
这里提供两种修复方式,第一种是简化逻辑的优化版本,可读性更高:
# 读取基础参数 start = int(input('Start of PA: ')) step = int(input('PA Reason: ')) current = start # 输出前10项 for _ in range(10): print(f'{current} > ', end='') current += step # 循环处理用户查询 while True: add_terms = int(input('\nHow many terms? ')) if add_terms == 0: print('END!') break # 输出指定数量的后续项 for _ in range(add_terms): print(f'{current} > ', end='') current += step
如果要基于你原有代码的变量风格做最小改动,修改方式如下:
i = int(input('Start of PA: ')) r = int(input('PA Reason: ')) t1 = i cont = 1 terms = 1 # 修复前10项输出逻辑,先打印再累加 while cont <= 10: print(f'{t1} > ', end='') t1 = t1 + r cont += 1 while terms != 0 : terms = int(input('\nHow many terms? ')) if terms!= 0: # 修复边界判断,直接循环指定次数即可,不需要和cont累加值做比较 for _ in range(terms): t1 = t1 + r print(f'{t1} > ', end='') else: print('END!')
内容的提问来源于stack exchange,提问作者Herbertt Jaques
相关产品推荐
相关产品推荐

