所以我有一些代码可以在没有函数的情况下完美运行。但是我想在一个函数中改变它,但它不能正常工作。
例如,我有 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
语句,上面的代码在函数中不能正常工作。请让我知道如何在没有打印语句的函数中使用它。使用回报。它应该是这个非函数工作代码中返回的确切输出。
再次感谢!
答案 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))