You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 20:24:33