У меня есть две переменные, которые я знаю, равны, но мой оператор if не распознает это? - PullRequest
0 голосов
/ 14 ноября 2018

Это мой код:

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

, но я никогда не помещал сюда новую функцию строки.

Любая помощьБуду очень признателен, так как мне нужно использовать этот код для школьного задания.

1 Ответ

0 голосов
/ 14 ноября 2018

Отладка печатью

# ...

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: 'red\n'

Aha! Подлый символ новой строки! Похоже, когда программа читала текст из файла и разбивала строки, она сохраняла символ новой строки для вас. Как сладко раздражает. : |

Чтобы удалить его, вы можете использовать метод 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]

    # ...

Кредит отправляется @ juanpa.arrivillaga за предложение использовать repr() для проверки значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...