【问题标题】:Learn Python the Hard Way Ex26: Not Getting Expected Result艰难地学习 Python Ex26:没有得到预期的结果
【发布时间】:2023-03-26 08:37:01
【问题描述】:
    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 python-2.7 syntax-error


    【解决方案1】:

    您的排序方法不正确。在 python 中, somelist.sort() 对列表进行排序并返回 None,因此您最终会删除列表。您可以执行 words = sorted(words) 或只执行 words.sort() 但执行 words = words.sort() 最终会将 words 设置为 None。

    此外,您的拆分词很可能不正确。 Doing stuff[0] 获取句子数组中的第一个字符串;将其转换为列表会返回一个字母列表,每个字母都是列表的一个元素。鉴于您定义句子的方式,您已经有了一个拆分句子;如果你做了 sentence = "the quick brown fox jumps over the lazy dog),你的拆分词可以做 sentence.split(" ") 将它分解成单词。

    最后,执行 pop 会改变列表;您的列表是 ["A","l","l"] ,因此在 3 次调用 get_first 或 get_last 之后,您现在已弹出所有元素,因此如您所见,第 4 次弹出将返回空列表。我不知道这是否是理想的行为;如果没有,您可以使用 words[0] 获得第一个而不发生变异,而 words[-1] 获得最后一个。

    【讨论】:

    • 如何在不变异的情况下弹出?我希望它返回最后一个元素。嗯。
    • 如前所述,val = words[-1] 将 words 中的最后一个元素分配给 val。
    • 如何不弹出所有元素?
    • 我不明白你的问题。你想完成什么?
    • 我试图摆脱练习中的所有错误。我想我要重新编辑我的线程,因为我从头开始修复错误。练习的重点是修复所有错误,使其编译时不会出错。
    【解决方案2】:

    我想通了。我应该注释掉第 79-91 行。就是这样!其他的我都做得很完美! :D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-14
      • 1970-01-01
      • 2013-04-06
      • 2011-12-04
      • 2016-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多