用户从文本文件中提示奇数或偶数行

时间:2017-04-21 22:02:36

标签: python

我需要编写一个程序,询问用户文本文件的名称,并选择" odd"或者"甚至"。然后程序将读取该文件并仅打印输入文件内容的奇数或偶数行,具体取决于用户选择的行(假设第一行是第1行)。 这是我到目前为止的代码:

fileOne = open(input (str("Please enter the name of the file you wish to open:" )), "r")

odd_even = input(str("Would you like the line odd or even?: "))
for line in fileOne:
    count = 0
    if odd_even == "even" or "Even":
        if count % 2 == 0:
        print(line)
    elif odd_even == "odd" or "Odd":
        if count % 2 == 1:
        print(line)

4 个答案:

答案 0 :(得分:1)

您应该以下一种方式进行比较:

if odd_even == "even" or odd_even == "Even":

或更好:

if odd_even in ["even", "Even"]:

甚至:

if odd_even.lower() == "even":

答案 1 :(得分:0)

如@lejlot在评论中所述,您的代码问题是不正确的or声明。

你的第一个if条件总是会产生真的。

if odd_even == "even" or "Even":

这些基本上是由or加入的两个条件。解释为

odd_even == "even" 

"Even"

无论第一个条件的结果是什么,第二个条件都会使整个语句成立,因为X or True总是True而Python "Even"中的Truebool("Even")因为{ {1}}是True

此外,Python尊重缩进,您需要正确缩进代码才能使其正常工作。

fileOne = open(input (str("Please enter the name of the file you wish to open:" )), "r")


odd_even = input(str("Would you like the line odd or even?: "))
for line in fileOne:
    count = 0
    if odd_even == "even" or odd_even == "Even":
        if count % 2 == 0:
        print(line)
    elif odd_even == "odd" or odd_even == "Odd":
        if count % 2 == 1:
        print(line)

PS:@MakeTips有更好的改善条件的建议。

答案 2 :(得分:0)

您不需要为每一行检查odd_even的值;检查一次以确定应与count %2进行比较。

fname = input("Please enter the name of the file you wish to open: ")
odd_even = input("Would you like the even or odd lines? ")
odd_even = 0 if odd_even.lower() == "even" else 1
with open(fname) as fileOne:
    for count, line in enumerate(fileOne):
        if count % 2 == odd_even:
            print(line)

注意:

  1. 使用with语句确保输入文件在完成后正确关闭。
  2. 使用lower方法“标准化”值,允许进行单一比较。
  3. 使用enumerate获取文件每行的行号。

答案 3 :(得分:0)

除了人们提到的or之外,你还需要改变你的count变量的方式。以下实际上"检查您在#34;上的哪一行,第一行为第1行。

count = 0
for line in fileOne:
    count += 1
    #rest of code