【发布时间】:2014-05-15 10:14:27
【问题描述】:
所以我想知道这是否可能。所以,我需要做的是让我的函数返回一个字符串。现在棘手的部分是我的函数打印出一个花哨的模式,我不确定如何将我的模式作为字符串返回?在我使用该函数之前,我不希望它实际打印任何内容:
my_function(c,r)
x = 4
y = 5
a = my_function(x,y)
print(a)
输出:
*nothing here blank space*
*pattern printed*
这是我的函数 my_function 的代码:
def my_function(c, r):
if(c > 0 and r > 0):
print("*" * c)
for i in range(r - 2):
if(c == 1):
print("*")
elif(c > 1):
print("*" + " " * (c - 2) + "*")
if(r > 1):
print("*" * c)
如果我按原样调用该函数,它将打印所有内容。但我不希望它打印出来。我尝试用 return 替换所有打印,但它只打印第一行(这并不意外,因为 return 只会在第 1 行终止函数)。
【问题讨论】:
-
从程序逻辑中分离输入/输出是用任何语言编写好的程序的基本步骤。根据经验,如果一个函数包含
print,那么它应该不计算任何在其他地方有用的东西。 -
@Bakuriu 您能否在解释中更明确一点?一般来说,我对编程比较陌生。
-
您的函数的问题在于将与用户的交互与程序的内部逻辑混合在一起。查看您收到的解决方案。您可以清楚地看到所描述的功能根本不与用户交互。我正是这个意思。一段代码要么处理与用户的交互,要么计算一些东西,但它不应该两者兼而有之。进一步描述这一点将花费太多时间和空间来发表评论。
-
@Bakuriu 所以,基本上你的意思是我应该避免在函数中使用 print?
-
没有。我的意思是,如果一个函数包含
print,那么它应该只包含与输出或输入相关的代码。