我在哪里遇到Sentinel或者破解了这个Python代码

时间:2015-07-02 05:18:34

标签: python

好的,这个程序差不多完成了,但它一直在运行。需要弄清楚哨兵或休息需要去哪里。这是我到目前为止在Python中所拥有的。该程序假设读取列表中的所有Pres并打印它们。然后有一个切片删除前两个和后两个。然后它打印列表大小是6然后继续给我6 alpha按alpha逆序。除了无限期地重复结束之外,我还有其他一切工作。必须有一个while循环才能显示播放列表返回的列表中的元素。

Pres = ['Kennedy','Johnson','Nixon','Ford','Carter','Reagan',\
        'Bush','Clinton','Bush','Obama'] 
Pres2 = Pres[2:8]

def main():

    for names in Pres:

        print(names)


    PR3=playlist(Pres2)
    while playlist !='6':
            for PR3 in Pres2:
                    print(PR3)


def playlist(PR):

    size = len(PR)
    print('list size is now', size)

    PR.sort()
    PR.reverse()
    return PR

main()

现在,这是我应该在我运行时获得的内容。

Kennedy
Johnson
Nixon
Ford
Carter
Reagan
Bush
Clinton
Bush
Obama
list size is now 6
Reagan
Nixon
Ford
Clinton
Carter
Bush

但是,在列表大小现在为6之后,最后6位总统不断重复。它需要在自己的行上垂直阅读。

2 个答案:

答案 0 :(得分:2)

即使是编程的基础知识,您也会遇到一些问题。我强烈建议您再次阅读您已阅读的课程。

然而,这里有一些解释:

  • playlist实际上是一个函数。这个while playlist !='6'循环只是验证这个函数对象不是字符串。它总是不同的,所以。如果你想比较函数的结果,你必须调用它:playlist(PR),这将执行函数并返回一个可以存储在变量中的列表。

  • 您的playlist函数正在返回list个对象。为什么要尝试将其与'6'进行比较? 此外,'6'不是您列表的长度。这是一个字符串。 6是列表的长度,因为它是一个int。

  • 为什么要使用while循环,因为您只希望六个Presidents显示一次?这根本不符合逻辑。循环用于需要重复未知次数的操作。

  • 由于Pres2Pres开始切片,其长度为6.它的长度从未如此高,即使假设您的循环已正确起草,内部代码也是如此永远不会被执行。

  • 当您使用for循环遍历列表时,在for之后写入的变量将用作别名,该别名表示从列表中迭代的当前对象。 for PR3 in Pres2:很奇怪,因为您已经定义了一个名为PR3的变量。如果您想在列表中显示总统,那么您就像以前一样使用for name in PR3

让我向您展示该功能的增强版本,希望您能够更好地了解它的工作原理:

def main():

    # Print the 10 Presidents
    for name in Pres:
        print(name)

    # Print the size of the list which already contains 6 Presidents
    # Then, sort the list, reverse it and return it
    # The new list is store into PR3
    PR3 = playlist(Pres2)

    # Print the 6 reverse sorted Presidents
    for name in PR3:
        print(name)

你明白了吗?你绝对不需要使用循环。

答案 1 :(得分:0)

  1. 编写一个名为mylist.py的程序,如下所示。请仔细按照说明操作,以避免扣分。
  2. 在主要功能中:

    创建一个列表,其中包含最近美国总统的姓氏,从肯尼迪开始到奥巴马结束,按时间顺序排列。 使用for循环迭代整个列表,在自己的行上打印每个总统的名字。 通过从名单中删除前两位总统和最后两位总统来筹码。 将新切片作为参数传递给名为playlist的自定义函数。 使用while循环显示播放列表返回的列表中的元素。 在播放列表功能中:

    打印切片列表的大小。使用列表功能。 按反向字母顺序对切片列表进行排序。 将此列表返回给main。 样本输出 原始列表主要: 肯尼迪 约翰逊 尼克松 涉 卡特 里根 衬套 克林顿 衬套 奥巴马 不在主要:列表大小现在是6 回到main,以反向alpha顺序列出 里根 尼克松 涉 克林顿 卡特 衬套

    它在主函数

    中调用while循环