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

