学习 Python 困难的方法 Ex26: 没有得到预期的结果
Learn Python the Hard Way Ex26: Not Getting Expected Result
def break_words(stuff):
"""This function will break up words for us."""
words = stuff.split(' ')
return words
def sort_words(words):
"""Sorts the words."""
return words.sort()
def print_first_word(words):
"""Prints the first word after popping it off."""
word = words.pop(0)
print word
def print_last_word(words):
"""Prints the last word after popping it off."""
word = words.pop(-1)
print word
def sort_sentence(sentence):
"""Takes in a full sentence and returns the sorted words."""
words = break_words(sentence)
return sort_words(words)
def print_first_and_last(sentence):
"""Prints the first and last words of the sentence."""
words = break_words(sentence)
print_first_word(words)
print_last_word(words)
def print_first_and_last_sorted(sentence):
"""Sorts the words then prints the first and last one."""
words = sort_sentence(sentence)
print_first_word(words)
print_last_word(words)
print "Let's practice everything."
print 'You\'d need to know \'bout escapes with \ that do \n newlines and \t tabs.'
poem = """
\tThe lovely world
with logic so firmly planted
cannot discern \n the needs of love
nor comprehend passion from intuition
and requires an explanation
\n\t\twhere there is none.
"""
print "--------------"
print poem
print "--------------"
five = 10 - 2 + 3 - 5
print "This should be five: %s" % five
def secret_formula(started):
jelly_beans = started * 500
jars = jelly_beans / 100
crates = jars / 100
return jelly_beans, jars, crates
start_point = 10000
beans, jars, crates == secret_formula(start-point)
print "With a starting point of: %d" % start_point
print "We'd have %d jeans, %d jars, and %d crates." % (beans, jars, crates)
start_point = start_point / 10
print "We can also do that this way:"
print "We'd have %d beans, %d jars, and %d crabapples." % secret_formula(start_point)
sentence = "All good\tthings come to those who wait."
words = ex25.break_words(sentence)
sorted_words = ex25.sort_words(words)
print_first_word(words)
print_last_word(words)
print_first_word(sorted_words)
print_last_word(sorted_words)
sorted_words = ex25.sort_sentence(sentence)
print_sorted_words
print_first_and_last(sentence)
print_first_and_last_sorted(sentence)
这是我更新后的代码。我认为代码中存在一些逻辑错误,但我更新了它以尝试重新开始,因为我认为我完全搞砸了代码。我应该提到的第一件事是我在第 77 行有一个语法错误,这似乎无法识别,因为我认为,首先,如果我将一个字符串分配给一个变量,那么它不应该给出语法错误。我猜它在另一条线上。
我重新开始尝试从头开始做所有事情。这越来越荒谬了。我认为接下来我必须找到的是剩下的逻辑错误。如果我错了告诉我。
您的排序方法不正确。在 python 中,somelist.sort() 对列表进行原位排序,returns None,因此您最终会删除列表。您可以执行 words = sorted(words) 或只是 words.sort() 但执行 words = words.sort() 最终会将 words 设置为 None.
此外,您的拆分词很可能不正确。执行 stuff[0] 获取句子数组中的第一个字符串;将其转换为列表 returns 一个字母列表,每个字母都是列表的一个元素。鉴于您如何定义句子,您已经有了一个拆分句子;如果你做了 sentence = "the quick brown fox jumps over the lazy dog), your split words could do sentence.split(" ") 把它分解成单词。
最后,执行 pop 会改变列表;您的列表是 ["A"、"l"、"l"],因此在调用 get_first 或 get_last 3 次后,您现在已经弹出所有元素,因此如您所见,第 4 个 pop 将是 return 空列表。我不知道这是否是期望的行为;如果没有,你可以做 words[0] 得到第一个而不改变,然后 words[-1] 得到最后一个。
我想通了。我应该注释掉第 79-91 行。就是这样!我把其他一切都做得很完美! :D
def break_words(stuff):
"""This function will break up words for us."""
words = stuff.split(' ')
return words
def sort_words(words):
"""Sorts the words."""
return words.sort()
def print_first_word(words):
"""Prints the first word after popping it off."""
word = words.pop(0)
print word
def print_last_word(words):
"""Prints the last word after popping it off."""
word = words.pop(-1)
print word
def sort_sentence(sentence):
"""Takes in a full sentence and returns the sorted words."""
words = break_words(sentence)
return sort_words(words)
def print_first_and_last(sentence):
"""Prints the first and last words of the sentence."""
words = break_words(sentence)
print_first_word(words)
print_last_word(words)
def print_first_and_last_sorted(sentence):
"""Sorts the words then prints the first and last one."""
words = sort_sentence(sentence)
print_first_word(words)
print_last_word(words)
print "Let's practice everything."
print 'You\'d need to know \'bout escapes with \ that do \n newlines and \t tabs.'
poem = """
\tThe lovely world
with logic so firmly planted
cannot discern \n the needs of love
nor comprehend passion from intuition
and requires an explanation
\n\t\twhere there is none.
"""
print "--------------"
print poem
print "--------------"
five = 10 - 2 + 3 - 5
print "This should be five: %s" % five
def secret_formula(started):
jelly_beans = started * 500
jars = jelly_beans / 100
crates = jars / 100
return jelly_beans, jars, crates
start_point = 10000
beans, jars, crates == secret_formula(start-point)
print "With a starting point of: %d" % start_point
print "We'd have %d jeans, %d jars, and %d crates." % (beans, jars, crates)
start_point = start_point / 10
print "We can also do that this way:"
print "We'd have %d beans, %d jars, and %d crabapples." % secret_formula(start_point)
sentence = "All good\tthings come to those who wait."
words = ex25.break_words(sentence)
sorted_words = ex25.sort_words(words)
print_first_word(words)
print_last_word(words)
print_first_word(sorted_words)
print_last_word(sorted_words)
sorted_words = ex25.sort_sentence(sentence)
print_sorted_words
print_first_and_last(sentence)
print_first_and_last_sorted(sentence)
这是我更新后的代码。我认为代码中存在一些逻辑错误,但我更新了它以尝试重新开始,因为我认为我完全搞砸了代码。我应该提到的第一件事是我在第 77 行有一个语法错误,这似乎无法识别,因为我认为,首先,如果我将一个字符串分配给一个变量,那么它不应该给出语法错误。我猜它在另一条线上。
我重新开始尝试从头开始做所有事情。这越来越荒谬了。我认为接下来我必须找到的是剩下的逻辑错误。如果我错了告诉我。
您的排序方法不正确。在 python 中,somelist.sort() 对列表进行原位排序,returns None,因此您最终会删除列表。您可以执行 words = sorted(words) 或只是 words.sort() 但执行 words = words.sort() 最终会将 words 设置为 None.
此外,您的拆分词很可能不正确。执行 stuff[0] 获取句子数组中的第一个字符串;将其转换为列表 returns 一个字母列表,每个字母都是列表的一个元素。鉴于您如何定义句子,您已经有了一个拆分句子;如果你做了 sentence = "the quick brown fox jumps over the lazy dog), your split words could do sentence.split(" ") 把它分解成单词。
最后,执行 pop 会改变列表;您的列表是 ["A"、"l"、"l"],因此在调用 get_first 或 get_last 3 次后,您现在已经弹出所有元素,因此如您所见,第 4 个 pop 将是 return 空列表。我不知道这是否是期望的行为;如果没有,你可以做 words[0] 得到第一个而不改变,然后 words[-1] 得到最后一个。
我想通了。我应该注释掉第 79-91 行。就是这样!我把其他一切都做得很完美! :D