def pryklad (b):
a=1
while a < 10:
print a*b
a=a+1
if __name__=="__main__":
pryklad(3)
a=pryklad(3)
value=str(a)
file=open('C:/Python27/file.txt','w+')
file.write(value)
print file
3 回答
a = pryklad(3)
结果a
是None
,因为您的函数中没有return
语句。现在它只是打印一些数字。另外,我不确定你想从print file
.
你的程序有很多问题
pryklad() 函数没有返回任何值。
您没有存储第一次调用 pryklad() 函数的值。
您不必使用 str() 将 pryklad() 返回的值转换为字符串。
最后一行
print file
不会打印文件的实际内容。它将打印有关file
对象的一些信息。最后,这实际上不是一个错误,而是尝试遵循一些良好的编码标准,例如为函数命名(至少我无法理解 pryklad 的含义,也许其他人知道它的含义),
为变量提供正确的名称而不是
a
,b
使用变量名称,例如height
,weight
(这是一个疯狂的猜测,但我假设您正在尝试测量矩形的面积)
尝试这些事情,然后您将能够查看 file.txt 中的一些值
如果 python 没有return
特别指定,它将返回None
.
您的函数不是返回a*b
每个循环,而是打印它。该函数从不返回任何内容,因此它返回None
.
因此,当你这样做时a = pryklad(3)
,a is None
. 所以你正在写入"None"
你的文件。
你可能想要yield
这里。这将返回值a*b
,但函数不会中断。然后,在您的if __name__=="__main__":
代码块中,更改a=pryklad(3)
为a=list(pryklad(3))
. a
将包含a*b
while 循环中每个循环的列表。
然后您可能希望将每个数字添加到文件中。在这里,使用一个with
语句:
with open('C:/Python27/file.txt','w+') as myfile:
for number in a:
myfile.write(str(number))
如果您想打印文件的内容,print file
则不会这样做。您必须再次以阅读模式打开文件:
with open('C:/Python27/file.txt','w+') as myfile:
print myfile.read()