2013-12-11 3 views
0

У меня была задана задача создать небольшую игру, которая включает в себя текстовый файл, который является «зашифрованным» и «расшифрованным» вариантом текстового файла. Пользователю показан «зашифрованный» список (который был прочитан и добавлен к массиву) с некоторыми подсказками, например. A = # (я использую словарь для хранения возможных значений символов.)Основы Python - Сравнение 2 массивов

Моя проблема: я создал всю игру, но я добавил в свое меню вариант, позволяющий конечному пользователю сравнивать слова, которые они заменили «расшифрованным» списком (также считанным в массив), чтобы увидеть, завершили ли они игру.

Я пробовал следующий код и проверил игру, чтобы я был на 100% уверен, что слова были идентичны, а Python Shell напечатала «Извините! Попробуйте снова!».

Вот код:

def compareFiles(): 
    for eachLine in range(len(rsef)): 
     if rsef[eachLine] == rssf[eachLine]: 
      print("Congratulations! Puzzle Solved!") 
     else: 
      print("Sorry! Try Again!") 
      secMenu() 

Для контекста:

secMenu() мое меню
rsef мой 'зашифрованы' массив
rssf является 'расшифрованы' массив, который я хочу по сравнению с.

EDIT:

Which Option Would You Like To Choose? 
Option Number: 1 
-------------------------------- 
1. View The Encrypted Words With Some Clues. 

A+/084&" 
A3MANA+ 
8N203: 
,1$& 
!-MN 
.A7&33& 
AMA71N 
&-&641'2 
A))85 
9&330M 

Это отсортированный:

Which Option Would You Like To Choose? 
Option Number: 5 

ACQUIRED 
ALMANAC 
INSULT 
JOKE 
HYMN 
GAZELLE 
AMAZON 
EYEBROWS 
AFFIX 
VELLUM 
+0

Имеет значение вопрос? Должен ли каждый элемент 'rsef' быть таким же, как соответствующий элемент в' rssf', или они могут быть в любом порядке? Будут ли две массивы одинаковой длины? – YXD

+0

Сравнение списков в python намного проще, do 'arr1 [:] == arr2 [:]' – PepperoniPizza

+1

Обратите внимание, что приведенный выше код напечатает сообщение 'pass' или 'fail' для _every line_. вы действительно хотите собрать общий проход/сбой для всех строк, а затем распечатать пропуск/сбой. –

ответ

2

Вот, чтобы проверить, если все элементы в обоих списках одинаковы:

def compareFiles(): 
    if rsef == rssf: 
     print("Congratulations! Puzzle Solved!") 
    else: 
     print("Sorry! Try Again!") 
     secMenu() 

Если вы настаиваете на зацикливание , ниже:

def compareFiles(): 
    for eachLine in range(len(rsef)): 
     if rsef[eachLine] != rssf[eachLine]: 
      print("Sorry! Try Again!") 
      secMenu() 
      return 0 #exit the function, use this if you need it. 

     print("Congratulations! Puzzle Solved!") 
+0

Как я могу изменить свой код, чтобы проверить 'eachLine', как я уже сказал? – MistUnleashed

+0

Хм .. Что ты собираешься проверить? Если оба одинаковы? – aIKid

Смежные вопросы