我有一个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]]
感谢解释和链接:)
答案 0 :(得分:1)
您不需要在while循环中明确break
。在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'))
答案 1 :(得分:1)
似乎语句的顺序不正常。如果您按照希望显示的顺序保留语句会更容易。对于您的示例,它看起来像这样:
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'))
首先我们从用户那里获取输入。虽然我们不会继续从他们那里得到一个数字。一旦输入的数字是偶数,我们将离开while循环并继续前进。这使我们的逻辑更简单,更容易阅读。
答案 2 :(得分:1)
有几件事情有误。第一个if语句不应该在while循环之外,并且当您要求用户输入EVEN填充时,该值不会存储在任何位置。这意味着无论用户输入什么,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代码的结果如下所示:
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