有人可以帮我修复我的代码吗?

时间:2013-09-01 08:11:41

标签: python python-3.x

所以这是我的代码:

with open('lines.txt') as f:
for i in f:
    line = input('line: ')
    if line not in i.split('\n'):
        print(line, i.split('\n'), end='\n')
    else:
        continue

它应该从文本文件中获取行并让我输入第一个,第二个,第三个等等。直到文件中没有更多行,并且如果我输错了行,它会打印“No!”但它说“不!”对于我输入的每一个输入,我需要做些什么来使这个代码工作?

4 个答案:

答案 0 :(得分:4)

很好的尝试!这是一个解决方案,使用有用的rstrip字符串方法来处理那些讨厌的换行符。这样做你想要的,逐行询问输入,如果你弄错了,它会移动到下一个。

with open('lines.txt') as f:
    for i in f:
        i = i.rstrip()
        line = input('line: ')
        if line != i:
            print('No!')

答案 1 :(得分:3)

.split()返回一个列表。您可能想要检查该行是否 列表。

执行:

if line in i.split('\n'):

答案 2 :(得分:1)

您正在将字符串与行

中的列表进行比较
    if line != i.split('\n')[0]:

您可以尝试与数组中的第一个元素进行比较:

    if line != i.split('\n')[0]:

或者,如果您可以安全地忽略前导和尾随空格:

    if line != i.strip()

你拥有的else块会在每次正确输入的行之后显示第二个未经检查的输入,这是你想要的吗?

答案 3 :(得分:1)

你应该匹配整条线吗?在这种情况下你想要的只是

if line != i.strip():

如果您需要忽略双倍空格等。它更复杂,您需要执行以下操作:

match = True
myWords = line.strip().split()
fileWords = i.strip().split()
for myWord, fileWord in zip(myWords, fileWords):
  if myWord != fileWord:
    match = False
if Match:
  line = input('line: ')
else:
  print('No')

如果出现错误,问题是否要求您不要移到下一行?