BYU logo Computer Science

To start this lab, download this zip file.

Lab 16 - Input

Activities

anagrams.py

anagrams.py is a simple word game using anagrams. An anagram is a series of letters that can be used to form another word. For example, dgo is an anagram of dog. In this game, a word is chosen randomly from a word list, then the scrambled letters are shown to the user. The user supplies guesses of the original word until he or she gets it right.

Requirements

  • The filename for the word list is provided as the first command-line argument (sys.argv[1])
  • The program should select a word at random from the word list file
  • The user should be prompted for a word guess with the text: Guess: (note the trailing space)
  • If the guess is incorrect, the program should print the text Incorrect and prompt the user for a new guess
  • If the guess is correct, the program should print the text Correct! and then display the text Total Guesses: followed by the number of guesses the user provided.
  • To get a list of scrambled letters, use:
scrambled = random.sample(word, len(word))

Example

Because the program uses a random word and scrambles the letters randomly, what follows is an example of how the program could be played.

python anagrams.py test_files/words.txt

t o s c a
Guess: scato
Incorrect
Guess: stoca
Incorrect
Guess: tacos
Correct!
Total Guesses: 3

math_practice.py

math_practice.py is a math game that helps us practice addition. The program displays some randomly generated addition expressions (eg. 7 + 3) and the user tries to solve them. After solving all the expressions, the user gets a score and is shown the expressions they got right and wrong.

Requirements

  • The number of expressions is provided as the first command-line argument (sys.argv[1])
  • Before each expression is shown, display which question the user is on using the format Question 1: (note the trailing space)
  • Use random.randint(lower_bound, upper_bound) to generate two numbers to be used in the addition expression
    • lower_bound is provided as the second command-line argument (sys.argv[2])
    • upper_bound is provided as the third command-line argument (sys.argv[3])
  • Present the expression in the format number1 + number2 where number1 and number2 are the randomly generated numbers.
  • The user should be prompted for an answer with the text: Answer: (note the trailing space)
  • After answering all the questions, the user is presented how many points they scored (eg. You Scored 5 Points!), the expressions they calculated correctly and the expressions they calculated incorrectly.
    • The expressions should be presented in a comma-delimited list (comma followed by space between each expression).

Important: the output of your program should exactly follow the format demonstrated in the example below.

Example

Because the program uses randomly generated numbers, what follows is an example of how the program could be played.

python math_practice.py 3 1 10

Question 1: 
7 + 1
Answer: 8
Question 2: 
5 + 4
Answer: 6
Question 3: 
8 + 2
Answer: 10
You Scored 2 Points!
Correct Answers: 7 + 1, 8 + 2
Incorrect Answers: 5 + 4

flashcards.py

flashcards.py is a program that helps you study. The user gives the program a text file containing flashcards and the program then presents the flashcards to the user in a random order. If the user answers wrong, then they are shown the correct answer.

Requirements

  • The filename for the flashcards is provided as the first command-line argument (sys.argv[1])
    • The flashcards are formatted in question/answer pairs. As an example, one line in the file might look like: this is a question?|answer
  • The program presents the flashcards in a random order
  • The user is prompted to answer each flashcard with the text: Guess: (note the trailing space)
  • If the user gets the answer correct, display Correct! and add one point to their score.
  • If incorrect, display Incorrect. and show the correct answer in the format Correct answer: _answer here_
  • After answering all the flashcards, their score is presented in the format of a ratio (eg. You got 3/5 correct.)
  • In order to randomize the order the flashcards, use:
shuffled_flashcards = random.sample(flashcards, len(flashcards))

Example

Flashcard example text file:

flashcards.txt

What do you call a bagel that can fly?|A plain bagel
What are two things you can't eat for breakfast?|Lunch and Dinner
What word becomes shorter when you add two letters to it?|Short
Before Mt. Everest was discovered, what was the tallest mountain in the world?|Mt. Everest (it just wasn't discovered yet)

Because the program displays the flashcards in a random order, what follows is an example of how the program could be played.

python flashcards.py flashcards.txt

What are two things you can't eat for breakfast?
Guess: Lunch and Dinner
Correct!
What do you call a bagel that can fly?
Guess: I dont know
Incorrect.
Correct answer: A plain bagel
Before Mt. Everest was discovered, what was the tallest mountain in the world?
Guess: Mt. Shasta
Incorrect.
Correct answer: Mt. Everest (it just wasn't discovered yet)
What word becomes shorter when you add two letters to it?
Guess: Short
Correct!
You got 2/4 correct.

Grading

ActivityPoints
anagrams.py10 points
math_practice.py10 points
flash_cards.py10 points