while循环。"无输出 "问题

问题描述 投票:1回答:1

我的任务是: "编写一个程序,读取并打印出所有以给定字母开头的行。文件路径和起始字母将作为命令行参数。你可以假设所有的命令行参数都是有效的"

例如

$ cat cats.txt
calico
siamese
ginger
cute, cuddly

$ python3 filter.py cats.txt c
calico
cute, cuddly

$ python3 filter.py cats.txt g
ginger

我的代码现在看起来是这样的。

import sys
with open("cats.txt", "r") as f:
   a = f.readlines()
   word_no = 0
   l = len(a) - 1
   while word_no <= l:
       if (a[word_no][0]) == sys.argv[1]:
           print (a[word_no])
       word_no += 1

然而,我没有通过测试用例,因为我的代码没有任何输出, 即使它在样本文本文件中工作?enter image description here

python while-loop output
1个回答
3
投票

在你的代码中似乎有一些错误 - 硬编码的文件路径,不正确的索引,以及不正确的代码。sys.argv 和印刷线 \n. 更正后的代码。

import sys
with open(sys.argv[1], "r") as f:
   a = f.readlines()
   word_no = 0
   l = len(a) - 1
   while word_no <= l:
       if (a[word_no][0]) == sys.argv[2]:
           print (a[word_no].strip())
       word_no += 1

还有,写这段代码的更好方法是:

import sys
with open(sys.argv[1], "r") as f:
    for line in f:
        if line[0] == sys.argv[2]:
            print(line.strip())
© www.soinside.com 2019 - 2024. All rights reserved.