Reputation: 13
This is another question relating to my program I mentioned in my last question. The program I'm making is a program that will display a word in one language and ask for the translation in another. It will then display if it's right or wrong. However, when I test to see if it works, it will display all of the versions of Incorrect, even if the answer is correct. How do I get it to only display the appropriate message? Such as if somethings correct say ('Correct!') and if somethings wrong say ('Incorrect. The correct answer is _')
This is what I have:
if words == 'ano' and translation == 'um':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: um.')
if words == 'ima' and translation == 'now':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: now.')
if words == 'eego' and translation == 'english':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: english.')
if words == 'hai' and translation == 'yes':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: yes.')
if words == 'gakusei' and translation == 'student':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: student.')
if words == '...go' and translation == 'language':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: language.')
if words == 'kookoo' and translation == 'high school':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: high school.')
if words == 'gogo' and translation == 'pm':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: pm.')
if words == 'gozen' and translation == 'am':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: am.')
if words == '...sai' and translation == 'years old':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: years old.')
if words == '...san' and translation == 'mr/ms':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: mr/ms.')
if words == 'ji' and translation == "o'clock":
print('Correct!')
else:
print('Incorrect.')
print("The correct answer is: o'clock.")
if words == 'jin' and translation == 'people':
print('Correct.!')
else:
print('Incorrect.')
print('The correct answer is: people.')
if words == 'senkoo' and translation == 'major':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: major.')
if words == 'sensei' and translation == 'teacher':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: teacher.')
if words == 'soo desu' and translation == "that's right":
print('Correct!')
else:
print('Incorrect.')
print("The correct answer is: that's right.")
if words == 'daigaku' and translation == 'college/university':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: college/university.')
if words == 'denwa' and translation == 'telephone':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: telephone.')
if words == 'tomodachi' and translation == 'friend':
print('Correct.!')
else:
print('Incorrect.')
print('The correct answer is: friend.')
if words == 'namae' and translation == 'name':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: name.')
if words == 'nan/nani' and translation == 'what':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: what.')
if words == 'nihon' and translation == 'japan':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: japan.')
if words == '...nensei' and translation == 'year student':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: year student.')
if words == 'han' and translation == 'half':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: half.')
if words == 'bangoo' and translation == 'number':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: number.')
if words == 'ryuugakusei' and translation == 'international student':
print('Ccorect!')
else:
print('Incorrect.')
print('The correct answer is: international student.')
if words == 'watashi' and translation == 'I':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: I.')
if words == 'amerika' and translation == 'america':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: america.')
if words == 'igirisu' and translation == 'britain':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: britain.')
if words == 'oosutoraria' and translation == 'australia':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: australia.')
if words == 'kankoku' and translation == 'korea':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: korea.')
if words == 'suweeden' and translation == 'sweeden':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: sweeden.')
if words == 'chuugoku' and translation == 'china':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: china.')
if words == 'kagaku' and translation == 'science':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: science.')
if words == 'ajia kenkyuu' and translation == 'asian studies':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: asian studies.')
if words == 'keizai' and translation == 'economics':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: economics.')
if words == 'kokusaikankei' and translation == 'international relations':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: international relations.')
if words == 'konpyuutaa' and translation == 'computer':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: computer.')
if words == 'jinruigaku' and translation == 'anthropology':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: anthropology.')
if words == 'seeji' and translation == 'politics':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: politics.')
if words == 'bijinesu' and translation == 'business':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: business.')
if words == 'bungaku' and translation == 'literature':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: literature.')
if words == 'rekishi' and translation == 'history':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: history.')
if words == 'shigoto' and translation == 'job' or translation == 'work' or translation == 'occupation':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: "job" or "work" or "occupation".')
if words == 'isha' and translation == 'doctor':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: doctor.')
if words == 'kaishain' and translation == 'office worker':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: office worker.')
if words == 'kookoosei' and translation == 'high school student' or translation == 'highschool student':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: "high school student" or "highschool student".')
if words == 'shufu' and translation == 'house wife':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: house wife.')
if words == 'daigakuinsei' and translation == 'graduate student':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: graduate student.')
if words == 'daigakusei' and translation == 'college student':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: college student.')
if words == 'bengoshi' and translation == 'lawyer':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: lawyer.')
if words == 'okaasan' and translation == 'mother' or translation == 'mom':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: "mother or "mom".')
if words == 'otoosan' and translation == 'father' or translation == 'dad':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: "father or "dad".')
if words == 'oneesan' and translation == 'older sister' or translation == 'big sister':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: "older sister" or "big sister".')
if words == 'oniisan' and translation == 'older brotehr' or translation == 'big brother':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: "older brother" or "big brother".')
if words == 'imooto' and translation == 'younger sister' or translation == 'little sister':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: "younger sister" or "little sister".')
if words == 'otooto' and translation == 'younger brother' or translation == 'little brother':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: "younger brother" or "little brother".')
EDIT: This is the code before the above code. Not sure if it'll help.
words = ['ano', 'ima', 'eego', 'hai', 'gakusei', '...go', 'kookoo', 'gogo', 'gozen', '...sai', '...san', '...ji', '...jin', 'senkoo', 'sensei', 'soo desu', 'daigaku', 'denwa', 'tomodachi', 'namae', 'nan/nani', 'nihon', '...nensei', 'han', 'bangoo', 'ryuugakusei', 'watashi', 'amerika', 'igirisu', 'oosutoraria', 'kankoku', 'suweeden', 'chuugoku', 'kagaku', 'ajia kenkyuu', 'keizai', 'kokusaikankei', 'konpyuutaa', 'jinruigaku', 'seeji', 'bijinesu', 'bungaku', 'rekishi', 'shigoto', 'isha', 'kaishain', 'kookoosei', 'shufu', 'daigakuinsei', 'bengoshi', 'okaasan', 'otoosan', 'oneesan', 'oniisan', 'imooto', 'otooto']
random.shuffle(words)
index = 0
while index < len(words):
print(words[index])
translation = input('Enter the translation: ')
index += 1
print()
Upvotes: 0
Views: 125
Reputation: 2558
Wouldn't something along the lines of the below code be easier to maintain?
the_words = {'gakusei':'student',
'hai':'yes',
'...go':'language',
'kookoo':'high school',
}
the_word = 'GAKUSEI'
translation = 'Student'
the_word_lcase = the_word.lower()
if not the_word_lcase in the_words:
print 'Unknown word: %s' % the_word
elif the_words[the_word_lcase] == translation.lower():
print 'Correct!'
else:
print 'The correct answer is: %s' % the_words[the_word_lcase];
I edited it to make the word lowercase too before testing. The code will now ignore case as long as your master list (the_words dictionary) is all in lowercase. This of course depends on how strict you want to be with your verification.
Upvotes: 2
Reputation: 142216
That's a lot of repetitive code. The following is a skeleton you can base your code upon which uses a dict
to store the translations (so they're kept in all one place and not in if
statements), and can say incorrect/what the correct translation is, and also when a word is not recognised.
translations = {
'ano': 'um',
'ima': 'now',
'eego': 'english'
}
some_word = 'ano'
try:
translated = translations[some_word]
if translation == translated:
print('Correct!')
else:
print('Ooops, that should be:', translated)
except KeyError as e:
print("Sorry, I don't know", some_word)
Upvotes: 1
Reputation: 799150
Nest your comparisons.
if words == 'ima':
if translation == 'now':
print('Correct!')
else:
print('Incorrect.')
print('The correct answer is: now.')
Upvotes: 0