我知道有两个变量是相等的,但我的if语句没有认识到这一点



这是我的代码:

bookings = ['blue,red', 'green,orange', 'yellow, purple']
number = 0
b = 0
c = 1
file_test = open('test_1.txt' , 'wt')
results_song = []
for item in bookings:
words = bookings[number].split(',')
results_song.append(words[0])
results_song.append(words[1])
number = number + 1
results_song_str = 'n'.join(results_song)
print(results_song_str)
file_test.write(results_song_str)
file_test.close()
file_test = open('test_1.txt' , 'r')
line = file_test.readlines()

for item in bookings:
line_1 = line[b]
line_2 = line[c]
answer = input('If first word is then what is the second word')
if answer == line_2:
print('correct')
else:
print('wrong')
b = b + 2
c = c + 2

然而,代码将不会识别出答案等于line_2。我不明白为什么会发生这种事。我已经检查了c是正确的数字,并且line_2与答案相同。但我确实注意到,当我在打印答案和line_2时运行代码时,这将返回:

red
red

但我从来没有在这里放一个新的线条特征。

任何帮助都将不胜感激,因为我需要在学校作业中使用此代码。

通过打印进行调试

# ...
for item in bookings:
line_1 = line[b]
line_2 = line[c]
print("Your Answer:", repr(answer))
print("Actual Answer:", repr(line_2))
# ...

给出

Your Answer: 'red'
Actual Answer: 'redn'

啊哈!一个狡猾的换行符!似乎当程序从文件中读取文本并拆分行时,它为您保存了换行符。真烦人

要删除它,可以使用str.replace()方法

# ...
for _ in range(len(bookings)):   # I took the freedom to modify the loop conditions
line_1 = line[b].replace('n','')
line_2 = line[c].replace('n','')
# ...

或者更改从文件中读取行的方式,使用str.split()方法手动拆分行

# ...
with open('test_1.txt' , 'r') as file_test:
line = file_test.read().split('n')
for _ in range(len(bookings)):
line_1 = line[b]
line_2 = line[c]
# ...

由于建议使用repr()检查值,信用证发送至@juanpa.arrivilaga

相关内容

最新更新