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
相关产品推荐
相关产品推荐

