Python,如果不工作

时间:2017-01-05 16:10:54

标签: python arrays if-statement while-loop

我给了一个带数字的数组。 我正在尝试构建一个程序,用于识别该数字是偶数还是奇数。 这就是我所做的。

a = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
i=0
while i <= len(a):
    if a[i] % 2 == 0:
        print(a[i], " is an even number")
        i = i + 1
    else:
        print(a[i], " is an odd number")

我在思考,因为[0],[1]代表1,4,我以为我可以使用[i]我增加直到a的长度。 但是这段代码给了我一个无限循环。

这是我想在数组中使用单个数字的唯一方法。 我尝试使用

if a%2==0:
    print(a, " is an even number")

但那给了我一个错误。

提前致谢

3 个答案:

答案 0 :(得分:3)

您只需使用下面的for循环就可以实现这一目标:

a = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
for n in a:
    if n % 2:
        print(n, "is an odd number")
    else:
        print(n, "is an even number")

对于上述代码问题,您不会在i阻止内增加else,而您的条件应为< len(a)而不是<= len(a)

答案 1 :(得分:1)

将你的i = i + 1置于if / else之外,并将&lt; =替换为&lt;否则它超过了数组长度。

a = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
i=0
while i < len(a):
    if a[i] % 2 == 0:
        print(a[i], " is an even number")
    else:
        print(a[i], " is an odd number")
    i = i + 1

答案 2 :(得分:0)

你的问题是以下几点:

而不是使用&lt; = use&lt;。

在if和else中添加i = i + 1。 因为如果你打了一个偶数,它会加1到i,但如果你打一个奇数,它也会加1。

a = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
i=0
while i < len(a):
    if a[i] % 2 == 0:
        print(a[i], " is an even number")
        i = i + 1
    else:
        print(a[i], " is an odd number")
        i = i + 1 

然后,如果您使用此代码:

if a%2==0:
    print(a, " is an even number")

这里发生的是变量&#34; a&#34;是一个列表,并循环它你需要像你做的那样将列表拆分为单个组件&#34; a [i]&#34;。你在这里做的是将列表作为单个组件,而不是分解列表以获取列表的每个值。

希望你明白。