2012-05-06 44 views
1

到目前为止我已经得到了这段代码。 您输入一个数字,它应该读取packages.txt文件中的特定行并将其打印到python shell中。在下面的代码中,如果您输入“3”,例如它将打印行1-3,我不想要它要做的。在python中打印特定行?

which = input('Which package would you like?: ')

with open('packages.txt') as f: 
     i = 0 
     for line in f: 
      if i == (int(which)): 
       break 
      i += 1 
      print (line) 
+2

你能解释一下为什么它会打印1-3行吗? (如果可以的话,那么你是一个很好的解决问题的方法!:)) – huon

+0

我认为Python可能读取第0行到(哪个)并打印它们?还是我在这里错了? :P – EatMyApples

+0

是的,那是*发生了什么,但为什么会发生? (代码中的哪一部分意味着每一行都打印出“which”?Python在哪些位置遍历行,打印语句在哪里发生?) – huon

回答

2

想想代码的流程以及何时调用print (line)

你能看到这个代码和你的代码之间的重要区别吗?2 非常的

which = input('Which package would you like?: ') 

with open('packages.txt') as f: 
    i = 1 
    for line in f: 
     if i == (int(which)): 
      break 
     i += 1 
print (line) 
+0

它将继续打印,直到f被设置为0是这样吗? – EatMyApples

+0

'f'根本不会改变,它是文件。 'i'正在改变,'i + = 1'这一行就是这样,它将'i'的值加1。 – jgritty

+0

我认为问题出在i + = 1? – EatMyApples

1

可以enumeratef获得行的索引,如果它匹配which打印。我认为这是一个作业问题,所以不要把完整的代码放在这里:)

+0

Nah这不是一个家庭作业问题,我想为我的网站做一个小计算器:P – EatMyApples

+0

好的,应该很容易找出这个提示! –

+0

会改变i + = 1到i + =(哪个)有帮助? – EatMyApples

0

你可以简单地这样做:

lines = open('packages.txt').readlines()

现在你可以猜出它的其余部分。