这有什么不对?尝试将此函数的结果写入文件

时间:2013-10-07 10:45:22

标签: python

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 个答案:

答案 0 :(得分:2)

a = pryklad(3)会导致aNone,因为您的函数中没有return语句。现在它只是打印一些数字。另外,我不确定你从print file得到什么。

答案 1 :(得分:2)

你的程序中有很多问题

  1. pryklad()函数未返回任何值。

  2. 您没有存储pryklad()函数的第一次调用值。

  3. 您不必使用str()将pryklad()返回的值转换为字符串。

  4. 最后一行print file不会打印文件的实际内容。它 将打印有关file对象的一些信息。

  5. 最后,这实际上不是一个错误,但试着遵循一些好处 编码标准,如赋予功能正确的名称(至少我 我无法理解pryklad的意思,也许是其他人 知道它的含义),

    给变量赋予专有名称而不是 ab使用heightweight之类的变量名称 猜猜但我假设你正试图测量面积 矩形)

  6. 尝试这些操作,然后您就可以在file.txt

    中查看一些值

答案 2 :(得分:1)

如果某个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将包含while循环中每个循环的a*b列表。

然后您可能希望将每个数字添加到文件中。在这里,使用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()