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
语句的情况下不能在函数中正常工作。请让我知道如何在没有打印语句的情况下使其在函数中工作。使用回报。它应该与此非功能工作代码中返回的内容完全相同。
再次感谢!
解决方案
由于一个函数只能返回一个值,而不是打印,你想添加到一个变量来返回而不是打印。尝试:
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))
编辑:更换时错过了打印
推荐阅读
- asp.net - .NET HttpClient sendAsync() 特别是第二个请求超时
- java - 在 DoFn(apache crunch) 中传递一个映射(或并发哈希映射)
- axapta - 按日期比较更改行颜色
- php - 为什么我的自定义帖子类型仅针对我的自定义用户角色显示?
- html - 如何定位元素的背景图像相对于文档/正文溢出:由父设置隐藏?
- javascript - 如何使用 selenium 实现 Java 循环
- android - FloatingActionButton 转义锚视图的边界
- node.js - NodeJS渲染html文件,表单在角度端不起作用
- python - 8 使用深度优先搜索法的谜题
- git - 使用未提交的文件撤消 git reset --hard