【问题标题】:Python while and if problems [closed]Python while 和 if 问题 [关闭]
【发布时间】:2018-06-23 09:54:30
【问题描述】:

这应该通过除以 2 来检查一个数字是偶数还是奇数,但它总是查看相同的数字

 a= [1,2,5,7,8];
    i=0
    c=a[i]/2.0;
    d=0;
    b=len(a);
    while i < b:
            if (c).is_integer():
                        i=i+1;
                        d=d +1;         
            else:
                        i=i +1;
    print(d);

给我的答案是 0,但如果列表中的第一个数字,即使给出的答案也是 5。

显然它总是检测数字不是整数,那么有什么方法可以检查数字是否有小数?

【问题讨论】:

  • 你用一个浮点数除以一个整数,所以结果是一个浮点数。在 Python 中也不需要分号 ;。举一个你的代码运行的例子也是很好的。
  • 这段代码应该做什么?
  • 我建议你使用例如pythontutor.com 调查行为。这对其他 SO 用户没有用,因为代码似乎没有任何意义,也没有任何具体问题。
  • c 不是int,而是float(来自c=a[i]/2.0
  • @roganjosh 检查数字是偶数还是奇数

标签: python list if-statement while-loop


【解决方案1】:

您并没有遍历 c 的每个实例,所以目前您只是一遍又一遍地查看第一个元素。

a= [1,2,5,7,8]
i=0
d=0
b=len(a);
while i < b:
    c=a[i]/2.0
        if (c).is_integer():
                i=i+1
                d=d +1         
        else:
                i=i +1
print(d)

你也不需要 ;在每一行之后,这更像是一个 java 的东西。您还可以查看 for 循环。

a = [1, 2, 5, 7, 8]
for i in a:
    if (c).is_integer():
            i=i+1
            d=d +1
print(d)

这使用较少的变量并且是一种更好的格式。您应该查找可能对您有很大帮助的 python 样式指南。这是一个python style guide的链接。

【讨论】:

    【解决方案2】:

    我猜你想迭代列表a,那么你需要把c=a[i]/2.0;放到while循环中

    a = [1, 2, 5, 7, 8]
    i = 0
    d = 0
    b = len(a)
    while i < b:
        c = a[i] % 2
        if (c == 0):
            i = i + 1
            d = d + 1
        else:
            i = i + 1
    print(d)
    

    【讨论】:

    • @PatrickArtner is_integer() 检查浮点值是否等于整数;它没有检查 Python 类型。
    • @chepner 我的错,谢谢指出
    • 是的,我注意到了,所以我认为他想做 if(even_number) @chepner
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多