Ich bin Studium und Verbrauchssteuer lernen Python auf die harte Tour. In Verbrauchssteuer 41 habe ich einige Schwierigkeiten, den Code zu verstehen.Python für Schleife mit zwei Instanzen
Ich habe eine Frage in dem folgenden Code:
for sentence in snippet, phrase:
result = sentence[:]
Wie die für innerhalb von zwei Objekt Schleife. Ich konnte das einfach nicht verstehen. Snippet ist der eine der Schlüssel. Phrasen Sie den Wert dieser Taste im PHRASES dict. In meiner Wahl, Schleife muss in einer Liste oder Tupel. Aber konnten zwei nicht widersprechen.
Ist mein Verständnis falsch?
Vollständige Codeinformationen als
import random
from urllib import urlopen
import sys
WORD_URL = "http://learncodethehardway.org/words.txt"
WORDS = []
PHRASES = {
"class %%%(%%%):":
"Make a class named %%% that is -a %%%.",
"class %%%(object):\n\tdef __init__(self, ***)":
"class %%% has -a __init__ that takes self and *** parameters.",
"class %%%(object):\n\tdef ***(self, @@@)":
"class %%% has -a fucntion named *** that takes self and @@@ parameters.",
"*** = %%%()":
"Set *** to an instance of class %%%.",
"***.***(@@@)":
"From *** get the *** function, and call it with parameters self, @@@.",
"***.*** = '***'":
"From *** get the *** attribute and set it to '***'."
}
# do they want to drill phrase first
if len(sys.argv) == 2 and sys.argv[1] == "english":
PHRASES_FIRST = True
else:
PHRASE_FIRST = False
# load up the words from the website
for word in urlopen(WORD_URL).readlines():
WORDS.append(word.strip())
def convert(snippet, phrase):
class_names = [w.capitalize() for w in
random.sample(WORDS, snippet.count("%%%"))]
other_names = random.sample(WORDS, snippet.count("***"))
results = []
param_names = []
for i in range (0,snippet.count("@@@")):
param_count = random.randint(1,3)
param_names.append(', '.join(random.sample(WORDS,param_count)))
for sentence in snippet, phrase:
result = sentence[:]
# fake class names
for word in class_names:
result = result.replace("%%%", word,1)
# fake other names
for word in other_names:
result = result.replace("***", word, 1)
# fake parameter list
for word in param_names:
result = result.replace("@@@", word, 1)
results.append(result)
return results
# keep going until they hit CTRL-D
try:
while True:
snippets = PHRASES.keys()
random.shuffle(snippets)
for snippet in snippets:
phrase = PHRASES[snippet]
question, answer = convert(snippet, phrase)
if PHRASES_FIRST:
question, answer = answer, question
print question
raw_input("> ")
print "ANSWER: %s\n\n" % answer
except EOFError:
print "\nBye"
Oh. Vielen Dank. Das hilft sehr. –
wert Markierung als akzeptierte Antwort –