编写循环以查看列表中的数字是偶数还是奇数(python)

编写循环以查看列表中的数字是偶数还是奇数(python),python,Python,我试图写一个循环,它遍历一个数字列表并打印每个数字是偶数还是奇数。它看起来很简单,但它只是无限地打印出奇怪的东西。什么是谬论 samplenumber = [1,2,3,4,5,6,7,8,9,10] o = 0 f1 = samplenumber[o] while f1 < 11: if f1%2 == 0: print ("EVEN") else: print ("ODD") o += 1

我试图写一个循环,它遍历一个数字列表并打印每个数字是偶数还是奇数。它看起来很简单,但它只是无限地打印出奇怪的东西。什么是谬论

samplenumber = [1,2,3,4,5,6,7,8,9,10]
o = 0
f1 = samplenumber[o]
while f1 < 11:
    if f1%2 == 0:
        print ("EVEN")
    else:
        print ("ODD")
    o += 1
samplenumber=[1,2,3,4,5,6,7,8,9,10]
o=0
f1=样本编号[o]
当f1<11时:
如果f1%2==0:
打印(“偶数”)
其他:
打印(“奇数”)
o+=1
朋友,你需要仔细阅读

祝你好运,干杯。

谢谢:

    def test2():
        samplenumber = [1,2,3,4,5,6,7,8,9,10]
        for item in samplenumber:
            if item%2 == 0:
                print("EVEN")
            else:
                print("ODD")
输出:

    ODD
    EVEN
    ODD
    EVEN
    ODD
    EVEN
    ODD
    EVEN
    ODD
    EVEN

你有一个无限的while循环,因为你增加了错误的变量。while循环条件在某一点上必须等于false,但您的条件永远不会等于false(因此它会一次又一次地运行)。请参阅代码中的我的注释以了解更多解释:

samplenumber = [1,2,3,4,5,6,7,8,9,10]
o = 0
f1 = samplenumber[o]
while f1 < 11: #f1 will always equal 1 (samplenumber[o] = samplenumber[0] = 1), and 1 is always <11 
    if f1%2 == 0:
        print ("EVEN")
    else:
        print ("ODD")
    o += 1
samplenumber=[1,2,3,4,5,6,7,8,9,10]
o=0
f1=样本编号[o]

而f1<11:#f1将始终等于1(samplenumber[o]=samplenumber[0]=1),并且1始终是
o
f1
永不更改?
f1
在循环内不会更改,因此如果
f1<11
最初,然后它就一直是这样的,我错过了一个增量
o
?@billz哦,对不起,我忘了复制最后一行。每次循环发生时,我都在
o
中添加1,所以现在您在每次迭代中都在更改
o
——这应该是您的条件。将条件中的
f1
替换为
o
。另外,您可能希望
f1
也发生变化,因此每次都会查看列表中的下一个数字。我理解您的代码,但我的代码有什么问题?您没有增加f1。您需要在每个循环结束时将1添加到f1。我将1添加到
o
。每次执行循环时,f1也应该增加1。确切地说,请参见下面Michele的答案。记住标记它已解决!我知道你的方法可行,但我的谬论是什么?是什么使我的代码无限循环“奇数”?您好,在问题中给出的代码“f1”在循环外,它被赋予“samplenumber[o]”,在不修改此f1后,f1%2始终对值“1”执行。您可以将“f1=samplenumber[o]”移动到此内部。在python中已经有了一个在数组/列表中引用数据而不使用[]的构造,在循环中我使用了相同的构造,这避免了多个步骤。这意味着1也被添加到f1中,因此在某一点(当f1和o达到11时)为假。否,但f1不会改变。f1实际上并不等于samplenumber[o],它等于samplenumber[o]是什么——在本例中为1(编译器查找samplenumber[o]并将其分配给f1)。所以当o改变时,f1不会自动改变。只有在while循环内部放置一条语句“F1=samplenumber[o]”以继续将新值重新指定给F1时,F1才会更改。这样f1将被更新。希望这能有所帮助。
samplenumber = [1,2,3,4,5,6,7,8,9,10]
o = 0
f1 = samplenumber[o]
while f1 < 11: #f1 will always equal 1 (samplenumber[o] = samplenumber[0] = 1), and 1 is always <11 
    if f1%2 == 0:
        print ("EVEN")
    else:
        print ("ODD")
    o += 1