我最近选择了使用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,因此我正在使用的版本。我不确定为什么代码只运行三个输入而不是条件语句。
答案 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'