Python作业:不使用JSON/pandas/numpy格式化打印字典
字符定价格式化输出解决方案
问题背景
作业限制:不得使用JSON、pandas、numpy
现有字符定价字典:
char_pricing = { 'A': 44.0, 'B': 79.0, 'C': 60.0, 'D': 56.0, 'E': 46.0, 'F': 50.0, 'G': 65.0, 'H': 45.0, 'I': 38.0, 'J': 49.0, 'K': 51.0, 'L': 36.0, 'M': 48.0, 'N': 55.0, 'O': 56.0, 'P': 53.0, 'Q': 41.0, 'R': 58.0, 'S': 65.0, 'T': 36.0, 'U': 23.0, 'V': 49.0, 'W': 46.0, 'X': 48.0, 'Y': 54.0, 'Z': 52.0, 'a': 63.0, 'b': 55.0, 'c': 37.0, 'd': 55.0, 'e': 63.0, 'f': 58.0, 'g': 40.0, 'h': 31.0, 'i': 36.0, 'j': 50.0, 'k': 51.0, 'l': 36.0, 'm': 32.0, 'n': 58.0, 'o': 50.0, 'p': 55.0, 'q': 55.0, 'r': 53.0, 's': 61.0, 't': 57.0, 'u': 37.0, 'v': 33.0, 'w': 59.0, 'x': 53.0, 'y': 54.0, 'z': 39.0, '!': 35.0, '&': 65.0, '*': 65.0, '$': 65.0, '#': 64.0, '.': 30.0, ',': 36.0, '<': 38.0, '>': 38.0, '?': 45.0, '@': 65.0 }
需要输出的目标格式:
Pricing for font size 24pts =========================== A 44 B 79 C 60 D 56 E 46 F 50 G 65 H 45 I 38 J 49 K 51 L 36 M 48 N 55 O 56 P 53 Q 41 R 58 S 65 T 36 U 23 V 49 W 46 X 48 Y 54 Z 52 a 63 b 55 c 37 d 55 e 63 f 58 g 40 h 31 i 36 j 50 k 51 l 36 m 32 n 58 o 50 p 55 q 55 r 53 s 61 t 57 u 37 v 33 w 59 x 53 y 54 z 39 ! 35 & 65 * 65 $ 65 # 64 . 30 , 36 < 38 > 38 ? 45 @ 65
原代码仅输出3行,格式不符合要求,以下是修正后的实现:
修正后的代码
import math def showPricing(charPricing, fontPricing): fontsize = int(input("Enter font size: ")) title = f'Pricing for font size {fontsize}pts' print(title) print('=' * len(title)) # 获取与目标格式一致的字符顺序 chars = list(charPricing.keys()) items_per_line = 7 for idx, char in enumerate(chars): # 计算最终价格 price = math.ceil(charPricing[char] * fontPricing[fontsize]) # 打印当前条目,用4个空格分隔 print(f'{char} {price}', end=' ') # 每7个条目换行,最后一条也换行 if (idx + 1) % items_per_line == 0: print() # 示例调用(假设fontPricing中24号字体的倍率为1) font_pricing = {24: 1} showPricing(char_pricing, font_pricing)
关键改动说明
- 导入math模块:原代码使用
math.ceil但未导入,会引发NameError,补充导入后解决该问题 - 添加标题分隔线:用等号填充标题长度,匹配示例的格式规范
- 固定字符顺序:通过
list(charPricing.keys())获取字典的插入顺序(Python3.7+字典保留插入顺序),确保输出顺序与目标格式完全一致 - 按行分组输出:设置每行7个条目,通过计数器控制换行时机,保证每行数量正确
- 统一间距格式:用固定4个空格分隔每个条目,替代原代码的多tab,避免因终端tab宽度差异导致的格式错位
内容的提问来源于stack exchange,提问作者Alexandre
相关产品推荐
相关产品推荐

