Python使用colorama库实现打印排序列表时指定元素标红的问题
实现指定都道府县条目红显的修改方案
核心修改逻辑
- 初始化colorama时开启
autoreset=True,打印完红色内容后会自动恢复默认颜色,避免后续输出全部变红 - 先校验用户输入的都道府县是否存在于列表中,不存在直接输出提示
- 遍历全量排序结果打印时,匹配到目标条目就调用
Fore.RED设置红色输出,其余内容保持默认样式
修改后完整代码
import colorama from colorama import Fore, Back, Style # 初始化colorama,开启自动颜色复位 colorama.init(autoreset=True) table = [] f = open("population.csv", "r") for line in f : line = line.rstrip("\r\n") field = line.split(",") table.append(field) ##### field is a list f.close() #AVERAGE AGE MATH FOR EACH PREFECTURE agelist = [ "Age" ] ag = 2.5 for i in range(1, len(table[1])) : agelist.append(ag) ag += 5 #PRINT AVERAGE AGE LIST prefage = [] for pref in range(1, len(table)) : sum = 0 asum = 0 ysum = 0 for age in range(1, len(table[1])): sum += int(table[pref][age]) asum += int(table[pref][age]) * agelist[age] average = round(asum / sum, 1) for age in range(1, 5): ysum += int(table[pref][age]) yave = round(ysum*100 / sum, 1) prefage.append([(table[pref][0]), str(yave)]) #SORT AVARAGE IN DESCENDING ORDER n = len(prefage) while n > 1 : for p in range(0, n - 1) : if prefage[p][1] < prefage[p+1][1] : prefage[p], prefage[p+1] = prefage[p+1], prefage[p] n = n -1 print("MINORITY RATIO IN DESCENDING ORDER:") for pref in range(0, len(prefage)) : print(prefage[pref][0].rjust(10), end=" ") for avnum in range(1, len(prefage[0])) : print(prefage[pref][avnum].rjust(10)) print() prefcheck = input("Choose a prefecture: ") # 先判断输入的都道府县是否存在 pref_exists = any(prefcheck == item[0] for item in prefage) if not pref_exists: print("Sorry, no prefecture with that name") else: print("\nMINORITY RATIO IN DESCENDING ORDER WITH SELECTED PREFECTURE IN RED") for pref_item in prefage: # 匹配到目标条目则用红色打印 if pref_item[0] == prefcheck: print(Fore.RED + pref_item[0].rjust(10), end=" ") print(Fore.RED + pref_item[1].rjust(10)) else: print(pref_item[0].rjust(10), end=" ") print(pref_item[1].rjust(10))
内容的提问来源于stack exchange,提问作者clicktac
相关产品推荐
相关产品推荐

