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

Python打印列格式问题求助:嵌套循环实现类Java输出效果

Python嵌套循环格式问题:匹配Java输出效果

我正在完成一项需要用Java、Python、R实现的学校作业,目前在Python的格式处理上遇到了问题。要求写一个带两层嵌套FOR循环的Python程序:

  • 外层循环使用用户输入值,范围从1到该输入值
  • 内层循环使用输入值除以2的结果,范围从1到这个结果
    输出效果要和提供的Java代码一致,但现在我的Python代码打印出来的是行而非列,相关代码如下:

Java代码(预期输出逻辑)

package module1;
import java.util.Scanner;
public class Numbers {

    public static void main(String[] args) {
         Scanner input = new Scanner(System.in);

            System.out.println("Please enter a number: \n");

            int n = input.nextInt();
            input.close();
            
            int val = n/2;
            
            for (int i=1;i<=n; i++) {
                System.out.print(i);
                for (int j=1; j<=val; j++) {
                    System.out.print("\t" +j);
                }
                System.out.println();
            }
    }
}

Java代码的输出逻辑是:每一行先打印i,然后用制表符分隔依次打印1到val的所有数,整行内容输出完后再换行。

Python错误代码(当前输出异常)

import sys


def main():
    print("Please enter a number: ")
    n = int(sys.stdin.readline().strip())
    val = n // 2
    for i in range(1, n+1):
        print(i, end="")
        for j in range(1, val+1):
            print("\t", j, end="")
            print()


if __name__ == "__main__":
    main()

问题原因与修正方案

问题出在内层循环里的print()语句——这个语句会强制换行,导致每个j都被单独打印在新行,而不是和i以及其他j在同一行。

修正后的Python代码如下:

import sys

def main():
    print("Please enter a number: ")
    n = int(sys.stdin.readline().strip())
    val = n // 2
    for i in range(1, n+1):
        print(i, end="")
        for j in range(1, val+1):
            print("\t", j, end="")
        # 整行内容输出完成后再换行,对应Java的System.out.println()
        print()

if __name__ == "__main__":
    main()

把内层循环里的print()移到外层循环的末尾,就能实现和Java一致的输出:每一行包含i加上制表符分隔的1到val的数,整行输出后再换行。

内容的提问来源于stack exchange,提问作者Haley R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:45:28