-1
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  
4

3 回答 3

2

a = pryklad(3)结果aNone,因为您的函数中没有return语句。现在它只是打印一些数字。另外,我不确定你想从print file.

于 2013-10-07T10:47:11.877 回答
2

你的程序有很多问题

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

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

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

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

  5. 最后,这实际上不是一个错误,而是尝试遵循一些良好的编码标准,例如为函数命名(至少我无法理解 pryklad 的含义,也许其他人知道它的含义),

    为变量提供正确的名称而不是 ab使用变量名称,例如height, weight(这是一个疯狂的猜测,但我假设您正在尝试测量矩形的面积)

尝试这些事情,然后您将能够查看 file.txt 中的一些值

于 2013-10-07T10:51:34.047 回答
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将包含a*bwhile 循环中每个循环的列表。

然后您可能希望将每个数字添加到文件中。在这里,使用一个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()
于 2013-10-07T10:50:58.757 回答