mirror of
https://github.com/hastagAB/Awesome-Python-Scripts.git
synced 2025-03-16 10:39:47 +00:00
commit
0cbb94564b
121
Flash-card-Challenge/README.md
Normal file
121
Flash-card-Challenge/README.md
Normal file
@ -0,0 +1,121 @@
|
||||
# Project
|
||||
|
||||
Write a flash card quizzer from scratch
|
||||
|
||||
## Goals:
|
||||
|
||||
* practice breaking down a problem and solving it in Python from scratch
|
||||
* practice command line option parsing
|
||||
* practice reading from files
|
||||
* practice working with dictionaries and for loops
|
||||
|
||||
## Problem statement:
|
||||
|
||||
Write a Python script that takes a file containing flash card questions and answers as an argument
|
||||
and quizzes the user based on the contents of that file until the user quits the program. Questions
|
||||
should be selected randomly (as opposed to going in order through the file), and the user should
|
||||
type in their guess. The script should say whether or not a guess is correct and provide the correct
|
||||
answer if an incorrect answer is given.
|
||||
|
||||
The file will contain flash card challenges in the form:
|
||||
```
|
||||
question,answer
|
||||
question,answer
|
||||
question,answer
|
||||
question,answer
|
||||
...
|
||||
```
|
||||
For example, a state capitals flash card file might have the form:
|
||||
```
|
||||
Alabama,Montgomery
|
||||
Alaska,Juneau
|
||||
Arizona,Phoenix
|
||||
...
|
||||
```
|
||||
Running the quizzer script with this file might look like this:
|
||||
```
|
||||
$ python quizzer.py state_capitals.txt
|
||||
Texas? Austin
|
||||
Correct! Nice job.
|
||||
New Mexico? Santa Fe
|
||||
Correct! Nice job.
|
||||
Oregon? Portland
|
||||
Incorrect. The correct answer is Salem.
|
||||
Virginia? Richmond
|
||||
Correct! Nice job.
|
||||
Virginia? Exit
|
||||
Goodbye
|
||||
```
|
||||
## Breaking down the problem
|
||||
|
||||
### Step 1: Get the questions from a fixed flash card file
|
||||
|
||||
Download: http://web.mit.edu/jesstess/www/IntermediatePythonWorkshop/state_capitals.txt
|
||||
|
||||
Write the code to open and read state_capitals.txt (we'll deal with getting a variable
|
||||
filename from the user later). Create a dictionary, where each comma-separated question and
|
||||
answer become a key and value in the dictionary. Note that each line in the file ends in a
|
||||
newline, which you'll need to remove from the word.
|
||||
|
||||
Step 1 resources:
|
||||
|
||||
* File I/O: http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-files
|
||||
* Stripping characters (like whitespace and newlines) from a string: http://docs.python.org/library/stdtypes.html#str.strip
|
||||
|
||||
### Step 2: Randomly select questions from the question dictionary
|
||||
|
||||
Write a while loop that loops forever and at each iteration through the loop randomly
|
||||
selects a key/value pair from the questions dictionary and prints the question.
|
||||
|
||||
To randomly select a key from the dictionary, you can use the random module, and in
|
||||
particular the random.choice function.
|
||||
|
||||
When you run your script, to break out of the while loop you can press Control and then
|
||||
(while still holding down Control) c.
|
||||
|
||||
Step 2 resources:
|
||||
|
||||
* While loops: http://en.wikibooks.org/wiki/Python_Programming/Flow_control#While_loops
|
||||
* Dictionary manipulation: http://docs.python.org/tutorial/datastructures.html#dictionaries
|
||||
In particular, look at getting a list of the dictionary's keys using the keys method.
|
||||
* Selecting a random value from a list using the random module: http://docs.python.org/library/random.html#random.choice
|
||||
|
||||
### Step 3: Get and check the user's answer
|
||||
|
||||
Inside your while loop, write the code that gets an answer from the user and compares it to
|
||||
the answer retrieved from the questions dictionary. If the answer is correct, say so. If
|
||||
the answer is incorrect, say so and print the correct answer.
|
||||
|
||||
You can get input from a user using the raw_input function.
|
||||
|
||||
It is up to you how strict you want to be with a user's answer. Do you want capitalization
|
||||
to matter?
|
||||
|
||||
Step 3 resources:
|
||||
|
||||
* using raw_input to get data from the user: http://docs.python.org/library/functions.html#raw_input
|
||||
|
||||
### Step 4: Allow the user to quit the program
|
||||
|
||||
The while loop currently runs forever. Pick a special phrase (like "Exit") that the user
|
||||
can type instead of an answer that signals that they want to quit the program. When that
|
||||
special phrase is given, print a goodbye message and break out of the while loop to end the
|
||||
program.
|
||||
|
||||
Step 4 resources:
|
||||
|
||||
* Using the break keyword to break out of a loop: http://docs.python.org/tutorial/controlflow.html#break-and-continue-statements-and-else-clauses-on-loops
|
||||
* Making decisions with if, elif, and else: http://docs.python.org/tutorial/controlflow.html#if-statements
|
||||
|
||||
Step 5: Get the quiz questions file from the user
|
||||
|
||||
Write the code to get the quiz questions file from a command line argument. Handle the case
|
||||
where a user forgets to supply a file; in this case, print an error message saying they
|
||||
need to supply a file, and then exit the program using the exit() function.
|
||||
|
||||
Step 5 resources:
|
||||
|
||||
* Command line argument parsing: http://docs.python.org/library/argparse.html#module-argparse
|
||||
* Getting and checking the number of command line arguments: http://docs.python.org/library/sys.html
|
||||
|
||||
<FINISHED>
|
91
Flash-card-Challenge/flash_card_challenge.txt
Normal file
91
Flash-card-Challenge/flash_card_challenge.txt
Normal file
@ -0,0 +1,91 @@
|
||||
Project
|
||||
|
||||
Write a flash card quizzer from scratch
|
||||
|
||||
Goals:
|
||||
|
||||
1. practice breaking down a problem and solving it in Python from scratch
|
||||
2. practice command line option parsing
|
||||
3. practice reading from files
|
||||
4. practice working with dictionaries and for loops
|
||||
|
||||
Problem statement:
|
||||
|
||||
Write a Python script that takes a file containing flash card questions and answers as an argument
|
||||
and quizzes the user based on the contents of that file until the user quits the program. Questions
|
||||
should be selected randomly (as opposed to going in order through the file), and the user should
|
||||
type in their guess. The script should say whether or not a guess is correct and provide the correct
|
||||
answer if an incorrect answer is given.
|
||||
|
||||
Breaking down the problem
|
||||
|
||||
Step 1: Get the questions from a fixed flash card file
|
||||
|
||||
Download: http://web.mit.edu/jesstess/www/IntermediatePythonWorkshop/state_capitals.txt
|
||||
|
||||
Write the code to open and read state_capitals.txt (we'll deal with getting a variable
|
||||
filename from the user later). Create a dictionary, where each comma-separated question and
|
||||
answer become a key and value in the dictionary. Note that each line in the file ends in a
|
||||
newline, which you'll need to remove from the word.
|
||||
|
||||
Step 1 resources:
|
||||
|
||||
1. File I/O: http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-files
|
||||
2. Stripping characters (like whitespace and newlines) from a string: http://docs.python.org/library/stdtypes.html#str.strip
|
||||
|
||||
Step 2: Randomly select questions from the question dictionary
|
||||
|
||||
Write a while loop that loops forever and at each iteration through the loop randomly
|
||||
selects a key/value pair from the questions dictionary and prints the question.
|
||||
|
||||
To randomly select a key from the dictionary, you can use the random module, and in
|
||||
particular the random.choice function.
|
||||
|
||||
When you run your script, to break out of the while loop you can press Control and then
|
||||
(while still holding down Control) c.
|
||||
|
||||
Step 2 resources:
|
||||
|
||||
1. while loops: http://en.wikibooks.org/wiki/Python_Programming/Flow_control#While_loops
|
||||
2. Dictionary manipulation: http://docs.python.org/tutorial/datastructures.html#dictionaries
|
||||
In particular, look at getting a list of the dictionary's keys using the keys method.
|
||||
3. Selecting a random value from a list using the random module: http://docs.python.org/library/random.html#random.choice
|
||||
|
||||
Step 3: Get and check the user's answer
|
||||
|
||||
Inside your while loop, write the code that gets an answer from the user and compares it to
|
||||
the answer retrieved from the questions dictionary. If the answer is correct, say so. If
|
||||
the answer is incorrect, say so and print the correct answer.
|
||||
|
||||
You can get input from a user using the raw_input function.
|
||||
|
||||
It is up to you how strict you want to be with a user's answer. Do you want capitalization
|
||||
to matter?
|
||||
|
||||
Step 3 resources:
|
||||
|
||||
1. using raw_input to get data from the user: http://docs.python.org/library/functions.html#raw_input
|
||||
|
||||
Step 4: Allow the user to quit the program
|
||||
|
||||
The while loop currently runs forever. Pick a special phrase (like "Exit") that the user
|
||||
can type instead of an answer that signals that they want to quit the program. When that
|
||||
special phrase is given, print a goodbye message and break out of the while loop to end the
|
||||
program.
|
||||
|
||||
Step 4 resources:
|
||||
|
||||
1. Using the break keyword to break out of a loop: http://docs.python.org/tutorial/controlflow.html#break-and-continue-statements-and-else-clauses-on-loops
|
||||
2. Making decisions with if, elif, and else: http://docs.python.org/tutorial/controlflow.html#if-statements
|
||||
|
||||
Step 5: Get the quiz questions file from the user
|
||||
|
||||
Write the code to get the quiz questions file from a command line argument. Handle the case
|
||||
where a user forgets to supply a file; in this case, print an error message saying they
|
||||
need to supply a file, and then exit the program using the exit() function.
|
||||
|
||||
Step 5 resources:
|
||||
|
||||
1. Command line argument parsing: http://docs.python.org/library/argparse.html#module-argparse
|
||||
2. Getting and checking the number of command line arguments: http://docs.python.org/library/sys.html
|
||||
|
26
Flash-card-Challenge/french_food.txt
Normal file
26
Flash-card-Challenge/french_food.txt
Normal file
@ -0,0 +1,26 @@
|
||||
la nourriture,food
|
||||
avoir faim,to be hungry
|
||||
manger,to eat
|
||||
le repas,meal
|
||||
le petit-déjeuner,breakfast
|
||||
le déjeuner,lunch
|
||||
le dîner,dinner
|
||||
le goûter,snack
|
||||
le hors d'Å“uvre,appetizer
|
||||
le plat principal,main course
|
||||
la salle à manger,dining room
|
||||
la confiture,jam
|
||||
le croissant,croissant
|
||||
la farine,flour
|
||||
les frites,French fries
|
||||
l'huile d'olive,olive oil
|
||||
la mayonnaise,mayonnaise
|
||||
la moutarde,mustard
|
||||
un Å“uf,egg
|
||||
le pain,bread
|
||||
le pain grillé,toast
|
||||
les pâtes,pasta
|
||||
le poivre,pepper
|
||||
le riz,rice
|
||||
le sel,salt
|
||||
le sucre,suga
|
14
Flash-card-Challenge/metric.txt
Normal file
14
Flash-card-Challenge/metric.txt
Normal file
@ -0,0 +1,14 @@
|
||||
peta,quadrillion (10^15)
|
||||
tera,trillion (10^12)
|
||||
giga,billion (10^9)
|
||||
mega,million (10^6)
|
||||
kilo,thousand (10^3)
|
||||
hecto,hundred (10^2)
|
||||
deka,ten (10^1)
|
||||
deci,tenth (10^-1)
|
||||
centi,hundredth (10^-2)
|
||||
milli,thousandth (10^-3)
|
||||
micro,millionth (10^-6)
|
||||
nano,billionth (10^-9)
|
||||
pico,trillionth (10^-12)
|
||||
femto,quadrillionth (10^-15)
|
24
Flash-card-Challenge/quizzer.py
Normal file
24
Flash-card-Challenge/quizzer.py
Normal file
@ -0,0 +1,24 @@
|
||||
import random
|
||||
import argparse
|
||||
|
||||
parser = argparse.ArgumentParser(description="Get the quiz questions file")
|
||||
parser.add_argument('file', help="a quiz file containing questions and answers")
|
||||
args = parser.parse_args()
|
||||
file = args.file
|
||||
|
||||
state_capitals = {}
|
||||
with open(file) as f:
|
||||
for line in f:
|
||||
(key, val) = line.strip().split(',')
|
||||
state_capitals[key] = val
|
||||
|
||||
while(True):
|
||||
choice = random.choice(list(state_capitals.keys()))
|
||||
answer = input(('{}? '.format(choice)))
|
||||
if answer == state_capitals[choice]:
|
||||
print("Correct! Nice job.")
|
||||
elif answer.lower() == "exit":
|
||||
print("Goodbye")
|
||||
break
|
||||
else:
|
||||
print("Incorrect. The correct answer is {}".format(state_capitals[choice]))
|
50
Flash-card-Challenge/state_capitals.txt
Normal file
50
Flash-card-Challenge/state_capitals.txt
Normal file
@ -0,0 +1,50 @@
|
||||
Alabama,Montgomery
|
||||
Alaska,Juneau
|
||||
Arizona,Phoenix
|
||||
Arkansas,Little Rock
|
||||
California,Sacramento
|
||||
Colorado,Denver
|
||||
Connecticut,Hartford
|
||||
Delaware,Dover
|
||||
Florida,Tallahassee
|
||||
Georgia,Atlanta
|
||||
Hawaii,Honolulu
|
||||
Idaho,Boise
|
||||
Illinois,Springfield
|
||||
Indiana,Indianapolis
|
||||
Iowa,Des Moines
|
||||
Kansas,Topeka
|
||||
Kentucky,Frankfort
|
||||
Louisiana,Baton Rouge
|
||||
Maine,Augusta
|
||||
Maryland,Annapolis
|
||||
Massachusetts,Boston
|
||||
Michigan,Lansing
|
||||
Minnesota,Saint Paul
|
||||
Mississippi,Jackson
|
||||
Missouri,Jefferson City
|
||||
Montana,Helena
|
||||
Nebraska,Lincoln
|
||||
Nevada,Carson City
|
||||
New Hampshire,Concord
|
||||
New Jersey,Trenton
|
||||
New Mexico,Santa Fe
|
||||
New York,Albany
|
||||
North Carolina,Raleigh
|
||||
North Dakota,Bismarck
|
||||
Ohio,Columbus
|
||||
Oklahoma,Oklahoma City
|
||||
Oregon,Salem
|
||||
Pennsylvania,Harrisburg
|
||||
Rhode Island,Providence
|
||||
South Carolina,Columbia
|
||||
South Dakota,Pierre
|
||||
Tennessee,Nashville
|
||||
Texas,Austin
|
||||
Utah,Salt Lake City
|
||||
Vermont,Montpelier
|
||||
Virginia,Richmond
|
||||
Washington,Olympia
|
||||
West Virginia,Charleston
|
||||
Wisconsin,Madison
|
||||
Wyoming,Cheyenne
|
Loading…
x
Reference in New Issue
Block a user