Python for range循环输出多组结果时如何仅打印指定单组结果
代码修改方案
我们不需要改动原有的匹配逻辑,只需要新增一个列表存储所有匹配到的(root,pwr)对,再按需求排序筛选即可:
通用收集匹配对的基础代码
先把所有匹配结果存下来,后续根据不同需求做筛选:
x = 64 root = 0 results = [] # 新增列表存储所有匹配对 for pwr in range(2,6): if x > 1: while root <= x: root += 1 if root**pwr == x: results.append( (root, pwr) ) # 不直接打印,先存到列表 root = 0 elif x < 0: while root >= x: root -= 1 if root**pwr == x: results.append( (root, pwr) ) root = 0 elif x == 0: print('There is no such pair') break
需求1:仅输出root值最大的配对
在上述基础代码末尾添加以下内容:
if results: # 按root值降序排序,取第一个元素 max_root_pair = sorted(results, key=lambda item: item[0], reverse=True)[0] print(f'root = {max_root_pair[0]} and pwr = {max_root_pair[1]}') else: print('There is no such pair')
运行输出:root = 8 and pwr = 2
需求2:仅输出pwr值最大的配对
在基础代码末尾添加以下内容:
if results: # 按pwr值降序排序,取第一个元素 max_pwr_pair = sorted(results, key=lambda item: item[1], reverse=True)[0] print(f'root = {max_pwr_pair[0]} and pwr = {max_pwr_pair[1]}') else: print('There is no such pair')
运行输出:root = 4 and pwr = 3
内容的提问来源于stack exchange,提问作者Rus
相关产品推荐
相关产品推荐

