Skillshare intro to Python/Unit 5: Difference between revisions

imported>Jesstess
imported>Jesstess
 
(19 intermediate revisions by the same user not shown)
Line 20:
<pre>
$ python scrabble.py ZAEFIEE
2 eeAE
17 feeze
2 eaAI
17 feaze
2 aiEA
16 faze
2 aeEE
15 fiz
5 ifEF
15 fez
5 feFA
12 zee
5 faFE
12 zea
5 efIF
11 za
6 fieFAE
6 feeFEE
6 faeFIE
11 zaZA
5 if
12 zeeZEA
5 fe
12 zeaZEE
5 fa
15 fizFEZ
5 ef
15 fezFIZ
2 ee
16 fazeFAZE
2 ea
17 FEAZE
2 ai
17 FEEZE
2 ae
</pre>
 
Line 56:
==Breaking down the problem==
 
===Step 10: create a new Python file for the project===
 
Since this Scrabble cheater is a bigger project, and something we'll want to be able to run over and over, we'll need to write it in a text file instead of interactively at the Python interpreter.
Line 63:
 
 
===Step 21: construct a Python word list===
 
We need to turn the words in the <code>sowpods.txt</code> file into a Python list.
Line 100:
===Step 3: find valid words===
 
Next, we need to find all of the valid sowpods words that can be made up of the letters in the rack.
Write the code to find all words from the word list that are made of letters that are a subset of the rack letters. There are many ways to do this, but here's one way that is easy to reason about and is fast enough for our purposes: go through every word in the word list, and for every letter in that word, see if that letter is contained in the rack. If it is, save the word in a <tt>valid_words</tt> list. Make sure you handle repeat letters: once a letter from the rack has been used, it can't be used again.
 
Write the code to find all words from the word list that are made of letters that are a subset of the rack letters. There are many ways toTo do this, butuse here'sa one<code>for</code> way that is easyloop to reason about and is fast enough for our purposes: go through every word in the word list,. and forFor every letter in that word, see if that letter is contained in the rack. If it is, save the word in a <tt>valid_words</tt> list variable. Make sure you handle repeat letters: once a letter from the rack has been used, it can't be used again.
 
Hint: you will need to use a <code>for</code> loop inside of a <code>for</code> loop (the outer loop is for looping over the words, the inner loop is for looping over the letters in a word).
 
To check your work, use the <code>print</code> function to print <code>valid_words</code> after the <code>for</code> loop.
 
<b>Step 3 resources</b>:
<ul>
<li>
ListUsing manipulationlists: http://docs.python.org/tutorial/datastructures.html#more-on-lists.
</li>
<li>
Line 115 ⟶ 121:
===Step 4: scoring===
 
WriteOnce thewe codehave toa determinelist theof Scrabblevalid scoreswords, forwe eachneed validto word, usingget the Scrabble scores dictionaryfor fromeach aboveword.
 
To do this, use a <code>for</code> loop to go through each word in <code>valid_words</code>. For each word, use a counter to keep track of the score so far for the word. Then use another <code>for</code> loop to go through the word letter by letter; look up each letter in the <code>scores</code> dictionary and add the point value for that letter to the counter.
 
To check your work, use the <code>print</code> function inside the <code>for</code> loop to print each word in <code>valid_words</code> as well as its Scrabble value.
 
<b>Step 4 resources</b>:
<ul>
<li>
Dictionary manipulationDictionaries: http://docs.python.org/tutorial/datastructures.html#dictionaries.
</li>
</ul>
 
 
===Step 5: sorting===
 
Now that we have the point values for each valid word, we need to sort them so it's easy to see what the highest-value words are.
 
<b>Step 5 resources</b>:
<ul>
<li>
Lists, including sorting lists: http://docs.python.org/2/tutorial/datastructures.html#more-on-lists
</li>
</ul>
Line 129 ⟶ 151:
 
<pre>
$ python scrabble.py AAA
2 aaAA
Usage: scrabble.py [RACK]
</pre>
 
<pre>
$ python scrabble.py AAAaaaa
2 aa
</pre>
 
<pre>
$ python scrabble.py ZZAAEEI
2 eeAA
22 zeze
2 eaAE
21 ziz
2 aiAI
12 zee
2 aeEA
12 zea
2 aaEE
11 za
3 aiaAIA
11 zaZE
2 ee
12 zeeZEA
2 ea
12 zeaZEE
2 ai
22 zezeZEZE
2 ae
2 aa
</pre>
 
 
==Bonus challenge==
Anonymous user