我需要编写一个程序,询问用户文本文件的名称,并选择" 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)
答案 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"
中的True
是bool("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)
注意:
with
语句确保输入文件在完成后正确关闭。lower
方法“标准化”值,允许进行单一比较。enumerate
获取文件每行的行号。答案 3 :(得分:0)
除了人们提到的or
之外,你还需要改变你的count
变量的方式。以下实际上"检查您在#34;上的哪一行,第一行为第1行。
count = 0
for line in fileOne:
count += 1
#rest of code