首页 > 解决方案 > 如何将此代码转换为功能工作代码?

问题描述

所以我有一些代码可以在没有函数的情况下完美运行。但我想在一个函数中改变它,但它不能正常工作。

例如,我有end="". 如果不使用,这在函数中不起作用print

我也有不止一个print statements。当我将这些转为 时return,它们不起作用。那么有人可以帮我更改此代码以在函数中工作吗?

谢谢!

我的代码

def underscore_hash_staircase(number):
    if number > 0:
        k = 2 * number - 2
        for i in range(0, number):
            for j in range(number-1, k):
                print(end=" ".replace(" ", "_"))
            k = k - 1
            for j in range(0, i + 1):
                print("#", end="")
            print("")
    else:
        number = int(str(number).replace("-", ""))
        i = number
        while i >= 1:
            j = number
            while j > i:
                print('', end=' '.replace(" ", "_"))
                j -= 1
            k = 1
            while k <= i:
                print('#', end='')
                k += 1
            print()
            i -= 1
            
print(underscore_hash_staircase(8))

所以上面的代码在没有print语句的情况下不能在函数中正常工作。请让我知道如何在没有打印语句的情况下使其在函数中工作。使用回报。它应该与此非功能工作代码中返回的内容完全相同。

再次感谢!

标签: python

解决方案


由于一个函数只能返回一个值,而不是打印,你想添加到一个变量来返回而不是打印。尝试:

def underscore_hash_staircase(number):
    returnValue = ""  # start as empty string

    if number > 0:
        k = 2 * number - 2
        for i in range(0, number):
            for j in range(number-1, k):
                returnValue += "_"
            k = k - 1
            for j in range(0, i + 1):
                returnValue += "#"
            returnValue += "\n"  # adding a new line
    else:
        number = int(str(number).replace("-", ""))
        i = number
        while i >= 1:
            j = number
            while j > i:
                returnValue += "_"
                j -= 1
            k = 1
            while k <= i:
                returnValue += "#"
                k += 1
            returnValue += "\n"
            i -= 1
            
print(underscore_hash_staircase(8))

编辑:更换时错过了打印


推荐阅读