Python通过循环

时间:2017-07-21 10:55:07

标签: python

简单的问题,但这让我烦恼。我试图循环一系列不同因素的产品,然后将每个产品打印到一个文件。我可以使用“with”语句让代码工作,但没有它就无法工作,我无法理解为什么。我打开文件,然后像往常一样关闭它。代码如下:

f = open('out.txt', 'w')
for num1 in range(100,999):
    for num2 in range(100,999):
        product=num1*num2
        length=len(str(product))
        if length % 2 == 0:
            #halfway_point=
            print >> f, product
f.close()

在最后一行失败:

SyntaxError: invalid syntax

3 个答案:

答案 0 :(得分:2)

不确定您使用的是Python 2还是Python 3.无论哪种方式,您看到SyntaxError这一事实表明正在使用交互式解释器会话。

我将假设您使用的是Python 2. print >> expression, expression在Python 2中是有效的print statement,并且您在代码中对它的使用是正确的。它只是意味着将print语句中第二个表达式的字符串值重定向到第一个表达式中给出的类文件对象。 Python 3中没有此语句。

您可能正在将代码粘贴到交互式Python会话中,如果是这样,您将需要添加一个额外的新行来关闭"关闭"执行for之前的前一个close()循环,否则您将获得SyntaxError

如果将该代码添加到Python 2脚本文件并运行它,它将起作用:

$ python2 somefile.py

或者只是确保在使用交互式解释器时输入一个额外的新行。

对于Python 3,你会这样做:

print('{}'.format(product), file=f)

您也可以在Python 2中使用相同的print()函数,方法是从__future__模块导入它:

from __future__ import print_function

在这两种情况下,您都应该使用您在问题中提到的with声明。

答案 1 :(得分:0)

我不知道print >> f, product是什么意思。但你可以这样试试:

f = open('out.txt', 'w')
for num1 in range(100,999):
    for num2 in range(100,999):
        product=num1*num2
        length=len(str(product))
        if length % 2 == 0:
              #halfway_point=
              # print >> f, product
              print(str(product) ) # print in the console
              f.write(str(product) + "\n")
f.close()

答案 2 :(得分:-1)

由于print >> f, product

,您的语法错误即将发生

此外,您不是写入文件而是打印到控制台。

您需要f.write(str(product) + '\n')行代替print >> f, product(我不知道print >> f, product的含义)

这在python3中对我来说很好用

f = open('out.txt', 'w')
for num1 in range(100,999):
    for num2 in range(100,999):
        product=num1*num2
        length=len(str(product))
        if length % 2 == 0:
            #halfway_point=
            f.write(str(product) + '\n')
f.close()