213k views
2 votes
CS160 Computer Science I In class Lab 10

Objective:
Work with dictionaries
Work with strings
Work with files
Assignment:
This program will read a file of English words and their Spanish translation. It then asks the user for an English word. If it exists in your dictionary the Spanish translation is displayed. If the English word does not exist in the dictionary the program states that the word does not exist in its list of words.
Specifics:
Create a text file, with one English word and a Spanish word per line, separated by a colon. You can create the language file using a text editor, you do not need to write a program to create this file. An example of the file might be:
one:uno
two:dos
three:tres
four:cuatro
five:cinco
six:seis
seven:siete
eight:ocho
nine:nueve
ten:diez
After reading the text file, using it to fill up a dictionary, ask the user for an English word. If the word exists, print out the Spanish version. If the word does not exist state that the word is not in your list. Continue this process of asking for a word until the user does not enter a word (just pressed Enter).
As you might have noticed, there is nothing in the program that limits this Spanish words. This program can be written to work with any translation, so feel free to make it be French, or German or any other language where you can come up with a list of translated words. You also are not limited to 10 words, that is just the list I came up with for the example. The number of key/values pairs that you have in your dictionary is basically limited by the memory in your computer.
Hints
You will need to determine if the key (the English word) exists in the dictionary. Use the in operator with the dictionary, or the get() method. Either can be used to avoid crashing the program, which happens if you attempt to use a key that does not exist.
An example of running the program might be:
Enter the translation file name: oneToTen.txt
> Enter an English word to receive the Spanish translation.
Press ENTER to quit.
Enter an English word: one
he Spanish translation is uno
Enter an English word: ten
The Spanish word is diez
Enter an English word: 5
I don’t have that word in my list.
Enter an English word: three
The Spanish word is tres

1 Answer

6 votes

Answer:

The program in Python is as follows:

fname = input("Enter the translation file name: ")

with open(fname) as file_in:

lines = []

for line in file_in:

lines.append(line.rstrip('\\'))

myDict = {}

for i in range(len(lines)):

x = lines[i].split(":")

myDict[x[0].lower()] = x[1].lower()

print("Enter an English word to receive the Spanish translation.\\Press ENTER to quit.")

word = input("Enter an English word: ")

while(True):

if not word:

break

if word.lower() in myDict:

print("The Spanish word is ",myDict[word.lower()])

else:

print("I don’t have that word in my list.")

word = input("Enter an English word: ")

Step-by-step explanation:

This prompts the user for file name

fname = input("Enter the translation file name: ")

This opens the file for read operation

with open(fname) as file_in:

This creates an empty list

lines = []

This reads through the lines of the file

for line in file_in:

This appends each line as an element of the list

lines.append(line.rstrip('\\'))

This creates an empty dictionaty

myDict = {}

This iterates through the list

for i in range(len(lines)):

This splits each list element by :

x = lines[i].split(":")

This populates the dictionary with the list elements

myDict[x[0].lower()] = x[1].lower()

This prints an instruction on how to use the program

print("Enter an English word to receive the Spanish translation.\\Press ENTER to quit.")

This prompts the user for an English word

word = input("Enter an English word: ")

This loop is repeated until the user presses the ENTER key

while(True):

If user presses the ENTER key

if not word:

The loop is exited

break

If otherwise, this checks if the word exists in the dictionary

if word.lower() in myDict:

If yes, this prints the Spanish translation

print("The Spanish word is ",myDict[word.lower()])

If otherwise,

else:

Print word does not exist

print("I don’t have that word in my list.")

Prompt the user for another word

word = input("Enter an English word: ")

User Tsi
by
3.4k points