Python代码运行但不执行所有步骤

时间:2016-07-13 19:05:04

标签: python-2.7 conditional

我最近选择了使用Python进行计算和编程的简介。尝试做其中一个练习。以下是说明:

编写一个程序,检查三个变量 - x,y和z - 并打印其中最大的奇数。如果没有奇数,它应该打印一条消息。

这是我的代码:

print 'Please enter three numbers:'

x = input('First number: ')

y = input('Second number: ')

z = input('Third number: ')

if x%2 == 1:
    if x > y and y > z:
        print x

elif y%2 == 1:
    if y > x and x > z:
        print y

elif z%2 == 1:
    if y > x and z > y:
        print z

else:
    print 'None of your numbers are odd'

这是我运行代码时python shell输出的内容:

Please enter three numbers:

First number: 3

Second number: 8

Third number: 17

本书使用Python 2.7.11,因此我正在使用的版本。我不确定为什么代码只运行三个输入而不是条件语句。

2 个答案:

答案 0 :(得分:0)

您的代码似乎传递了一个条件,但不会传递打印另一个条件的条件。例如,如果x%2==1为真,则会输入if语句中的代码块,但如果不满足第二个条件,则不会查看其余条件。使用您输入的数字,您将看到您输入第一个if语句,因此无论嵌套的if语句是否具有其条件,其余语句都将被忽略满足。因此,您可以在嵌套语句之间打印出一些内容,如下所示:

if x%2 == 1:
    print 'x is an odd number.'
    if x > y and y > z:
        print x

答案 1 :(得分:0)

我不是简单地回答你的问题,而是提供了一些小的修改,以帮助你开始解释。

第一个变化是关于if和elif语句的使用。在您的代码中,如果x为奇数,则执行if语句,并且不会执行任何elif语句。不会检查其他任何数字。

如果数字是偶数,我将其设置为零,因此它不会大于最大的正奇数。

如果数字是奇数,你想确保它比其他两个更大,而不是测试x> y和y>你想检查x> y和x> ž。

最后,最后一个if语句检查它们是否都是偶数。

print 'Please enter three numbers:'
x = input('First number: ')
y = input('Second number: ')
z = input('Third number: ')

# if values are even set them to zero so they won't be the largest numbers
if x%2 == 0:
    x = 0
if y%2 == 0:
    y = 0
if z%2 == 0:
    z = 0

if x%2 == 1:
    if x > y and x > z:
    print x

if y%2 == 1:
    if y > x and y > z:
        print y

if z%2 == 1:
    if z > x and z > y:
        print z

if x == 0 and y == 0 and z == 0:
    print 'None of your numbers are odd'