首页 > 解决方案 > 我如何在没有新行的情况下结束这段代码?

问题描述

我目前正在经历 HackerRank 挑战,在这个特定的练习中,我需要打印多行,除了代码最后打印出一个我不想要的新的空白行,因为它导致了网站考虑整个输出错误。有没有办法可以做到只有我想打印的最后一行不会打印新行?这是我正在谈论的代码:

h, w = input().split(' ')
h = int(h)
w= int(w)
def main(w, h):
    p = '.|.'
    c = 0
    for i in range(int(float(h)/2)):
        print((p*(i*2+1)).center(w, '-'))
        c = i*2+1
    print('Welcome'.center(w, '-'))
    for i in range(int(float(h)/2)):
        print(((p*(c-i*2)).center(w, '-')))
main(w, h)

以及挑战的链接。

提前致谢。

标签: pythonpython-3.x

解决方案


您可以构造字符串并一次打印所有内容,而不是单独打印每一行(这样您可以删除最后一个换行符):

def main(w, h):
    p = '.|.'
    c = 0
    s = ''
    for i in range(h // 2):   #   a // b is the same as int(a / b)
        s += (p*(i*2+1)).center(w, '-') + '\n'
    c = (h // 2 - 1) * 2 + 1   #   only this value is used
    s += 'Welcome'.center(w, '-') + '\n'
    for i in range(h // 2):
        s += ((p*(c-i*2)).center(w, '-')) + '\n'
    s = s[:-1]
    print(s, end='')

推荐阅读