如何将此代码转换为函数工作代码?

时间:2021-04-05 23:11:39

标签: python

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

例如,我有 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 语句,上面的代码在函数中不能正常工作。请让我知道如何在没有打印语句的函数中使用它。使用回报。它应该是这个非函数工作代码中返回的确切输出。

再次感谢!

2 个答案:

答案 0 :(得分:1)

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

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))

编辑:替换时遗漏了一个打印

答案 1 :(得分:0)

该函数应该附加到一个字符串而不是打印,然后返回该字符串。附加 \n 以添加换行符。

def underscore_hash_staircase(number):
    result = ""
    if number > 0:
        k = 2 * number - 2
        for i in range(0, number):
           for j in range(number-1, k):
                result += "_"
           k = k - 1
           for j in range(0, i + 1):
               result += "#"
           result += "\n"
    else:
        number = -number
        i = number
        while i >= 1:
            j = number
            while j > i:
                result += "_"
                j -= 1
            k = 1
            while k <= i:
                result += "#"
                k += 1
            result += "\n"
            i -= 1
    return result

print(underscore_hash_staircase(8))

您也不需要所有这些内部循环。您可以通过相乘来重复一个字符串。

def underscore_hash_staircase(number):
    result = ""
    if number > 0:
        k = 2 * number - 2
        for i in range(1, number + 1):
           result += "_" * (number - i)
           result += "#" * i
           result += "\n"
    else:
        number = -number
        for i in range(number, 0, -1):
            result += "_" * (number - i)
            result += "#" * i
            result += "\n"
    return result

print(underscore_hash_staircase(8))
print(underscore_hash_staircase(-8))