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

Python实验求助:冰雹序列输出的制表符格式问题

解决冰雹序列输出格式问题

要满足每行10个整数时末尾带制表符,最后一行不足10个时末尾无多余制表符的要求,可以通过判断每行的元素数量或是否为最后一行来调整输出逻辑,以下是两种可行方案:

方案一:通过判断是否为最后一行调整输出

遍历拆分后的二维列表时,区分最后一行和其他行:其他行每个元素后添加制表符并直接输出,最后一行则去掉末尾多余的制表符再输出。

修改后的完整代码:

# Taking input from user
n = int(input())

# Creating Hailstone list:
hailstone_list = []
hailstone_list.append(int(n))
while n != 1:
    if n % 2 == 0:
        n = n // 2  # 用整数除法更严谨,避免浮点数转换
        hailstone_list.append(n)
    else:
        n = 3 * n + 1
        hailstone_list.append(n)
        
# Convert to 10-element chunks
splits = [hailstone_list[i:i+10] for i in range(0, len(hailstone_list), 10)]

# Output with correct formatting
for idx, chunk in enumerate(splits):
    # 将每个元素转为"数字\t"的格式
    formatted_items = [f"{num}\t" for num in chunk]
    if idx == len(splits) - 1:
        # 最后一行:移除末尾的制表符后输出
        print(''.join(formatted_items).rstrip('\t'))
    else:
        # 其他行:直接拼接输出
        print(''.join(formatted_items))

方案二:通过判断行内元素数量调整输出

直接检查当前行的元素是否为10个:满10个的行在拼接后额外添加一个制表符,不足10个的行直接用制表符分隔元素输出。

对应的输出代码段:

for chunk in splits:
    if len(chunk) == 10:
        # 满10个元素的行,末尾追加制表符
        print('\t'.join(map(str, chunk)) + '\t')
    else:
        # 不足10个元素的行,直接用制表符分隔
        print('\t'.join(map(str, chunk)))

说明

  • 原代码中n = n/2会生成浮点数,建议改为n = n // 2(整数除法),避免不必要的类型转换。
  • 两种方案都能精准满足测试要求:满行末尾带制表符,最后一行无多余制表符。

内容的提问来源于stack exchange,提问作者Gibberish Name

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:45:24