Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查数字是否为偶数的While循环:python2.7_Python_Loops_While Loop - Fatal编程技术网

检查数字是否为偶数的While循环:python2.7

检查数字是否为偶数的While循环:python2.7,python,loops,while-loop,Python,Loops,While Loop,我有一个while循环,可以检查用户是否输入偶数 pop_size = int(input('Enter an even population size:')) if pop_size % 2 == 0: print int(input('Enter an organism length')) while pop_size % 2 != 0: print int(input('Enter an EVEN population')) break length = in

我有一个while循环,可以检查用户是否输入偶数

pop_size = int(input('Enter an even population size:'))

if pop_size % 2 == 0:
     print int(input('Enter an organism length'))
while pop_size % 2 != 0:
    print int(input('Enter an EVEN population'))
    break 
length = int(input('Enter an organism length'))
我不知道该把长度放在哪里,也不知道该把断点放在哪里

Enter an even population size: 3
Enter an EVEN population 4
4
Enter an organism length 2
[[0, 1], [1, 0], [1, 1]]
这就是它的回报

但如果我这样做:

Enter an even population size: 3
Enter an EVEN population 3
3
Enter an organism length 2
[[1, 0], [1, 0], [0, 0]]
即使不是偶数,代码仍然会生成一个有机体

我需要得到的输出是:

Enter an even population size: 3
Enter an EVEN population 3
Enter an EVEN population 5
Enter an EVEN population 4
Enter an organism length 2
[[1, 0], [1, 0], [0, 0]] 

欢迎提供解释和链接:)

您不需要明确地将
从while循环中分离出来。在while循环中更新
pop_size
就足够了。它可能看起来像:

pop_size = int(input('Enter an even population size:'))
while pop_size % 2 != 0:
    pop_size = int(input('Enter an EVEN population'))
length = int(input('Enter an organism length'))

这些陈述的顺序似乎不符合顺序。如果您将语句保持在您希望它们显示的顺序,则会更容易。对于您的示例,它看起来是这样的:

pop_size = int(input('Enter an even population size:'))
while pop_size % 2 != 0:
    pop_size=int(input('Enter an EVEN population'))

length = int(input('Enter an organism length'))
           Enter an even population size: 1
           Enter an EVEN number: 5
           Enter an EVEN number: 3
           Enter an EVEN number: 9
           Enter an EVEN number: 4
           Enter organism length: 5

首先,我们从用户那里获取输入。虽然还没到,但我们会继续从他们那里得到一个数字。一旦输入的数字是偶数,我们将离开while循环继续。这使我们的逻辑更简单,更容易阅读。

有两件事是错误的。第一个if语句不应该在while循环之外,当您要求用户输入偶数填充时,该值不会存储在任何地方。这意味着无论用户输入什么,while循环都将中断。我不懂Python,但这就是Java中的代码。基本上是一样的,只是做必要的改变

    int in, length;
    boolean var = true;
    Scanner input = new Scanner(System.in);
    System.out.print("Enter an even population size: ");
    in = input.nextInt();

    while(var){
            if(in % 2 == 0){
                break;
            }
            else{
                System.out.print("Enter an EVEN number: ");
                in = input.nextInt();
            }
    }
    System.out.print("Enter organism length: ");
    length = input.nextInt();
Java代码的结果如下所示:

pop_size = int(input('Enter an even population size:'))
while pop_size % 2 != 0:
    pop_size=int(input('Enter an EVEN population'))

length = int(input('Enter an organism length'))
           Enter an even population size: 1
           Enter an EVEN number: 5
           Enter an EVEN number: 3
           Enter an EVEN number: 9
           Enter an EVEN number: 4
           Enter organism length: 5