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

Python打印自定义*网格:如何去除输出/n及优化代码?

问题:Python打印星号网格时出现/n字符,如何修复?

我尝试用Python实现一个基础功能:根据用户需求打印由*组成的网格。现有代码如下:

x=int(input('Enter a x width: '))
while x<1:
    x=int(input('Enter a valid x width: '))
y=int(input('Enter a y width: '))
while y<1:
    y=int(input('Enter a valid y width: '))
for i in range(0,y):
    for i in range(0,x):
        print('*',end='')
    print('/n')

运行后输出如下:

Enter a x width: 3
Enter a y width: 4
***/n
***/n
***/n
***/n

请问如何去除最终打印结果中的/n,或者有没有更优的代码实现方式?


解答

嘿,这个问题挺典型的,咱们一步步拆解解决:

先解决/n的问题

你代码里的print('/n')是把字符串/n直接输出了,而不是触发换行。Python里的换行是转义字符\n,不过其实更简单的是直接调用无参数的print()——它默认就会输出换行符。而且咱们还能省去内层循环,用字符串乘法直接生成一行星号,代码更简洁:

修改后的循环部分:

for _ in range(y):  # 用_代替重复的i变量,代码更规范
    print('*' * x)

这样运行后就不会出现/n字符,输出完全符合预期。

更优的代码实现方案

咱们可以把输入验证的逻辑抽成一个函数,让代码更复用、鲁棒性更强,同时处理用户输入非整数的情况(比如输入字母):

def get_positive_integer(prompt):
    while True:
        try:
            num = int(input(prompt))
            if num > 0:
                return num
            else:
                print("请输入大于0的整数!")
        except ValueError:
            print("请输入有效的整数哦!")

# 获取合法的宽高
width = get_positive_integer('Enter a x width: ')
height = get_positive_integer('Enter a y width: ')

# 打印网格
for _ in range(height):
    print('*' * width)

这个版本的优势:

  • 输入验证逻辑复用,避免重复写while循环
  • 处理了用户输入非整数的异常情况,程序更稳定
  • 用字符串乘法替代嵌套循环,代码更简洁易读

测试输入3和4的话,输出就是:

***
***
***
***

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:49:26