2016-07-13 21 views
-2

最近、Pythonを使用して計算とプログラミング入門を取り上げました。練習の一つをしようとしています。Pythonコードは実行されますが、すべてのステップが実行されません

x、y、zの3つの変数を調べ、それらの中で最大の奇数を出力するプログラムを作成します。奇数でない場合、その旨のメッセージを出力するはずです。ここで

は私のコードです:

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シェルの出力です:

Please enter three numbers: 

First number: 3 

Second number: 8 

Third number: 17 

本はPythonの2.7.11を使用するので、それは私が使用していたバージョンです。私はなぜコードが3つの入力だけを実行し、条件文は実行しないのかはわかりません。

+0

あなたのコードはok.x%2 == 1で実行されますが、xはあなたより小さくないので、他の印刷ステートメントは実行されません。 –

答えて

0

条件が成功すると、elif文は実行されません。あなたのケースでは

は、最初if3%2 == 1以来、成功しますが、それはyzよりも大きくないので、print x実行されません。 ifステートメントが実行されたため、他のelifステートメントまたはelseのステートメントは実行されません。

イラスト:

  • 最初ifは、それゆえのelif成功し、それ以外のスキップされます。
>>> if True: 
... print "if" 
... elif True: 
... print "elif" 
... else: 
... print "else" 
... 

出力:

if 

if条件が失敗した場合、次のelif条件がように実行されます。 elifのいずれの条件も成功せず、オプションの elseステートメントが存在する場合、それは実行されます。

コード:

あなたはこのような何かを行うことができます。

n = 3 
print "Enter %d numbers"%n 

print max(filter(lambda x : x%2!=0 ,[input("Enter %d number:"%i) for i in range(1,n+1)])) 

出力:3

3つの数字

は1つの番号を入力してください8

3番号を入力:17

上記のコードは、入力を取得するリスト内包を使用

2番号を入力します。その後、奇数だけがfilter関数を使用してフィルタリングされます。 max関数は、奇数のみを含むフィルターされたリストの最大要素を出力します。

0

あなたのコードは1つの条件を渡しているようですが、別の条件を渡しているようです。たとえば、x%2==1がtrueの場合、ifステートメントのコードブロックが入力されますが、2番目の条件が満たされない場合は、残りの条件が調べられません。入力した数値で、最初のifステートメントが入力されていることがわかります。したがって、残りのステートメントは、ネストされたifステートメントの条件が満たされているかどうかにかかわらず無視されます。そのため、あなたはそうのように、ネストされたステートメントの間で何かをプリントアウトすることがあります

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

をむしろ単に、私はあなたが始めるのに役立つ説明といくつかの小さな変更を提供し、あなたの質問に答えるよりも。

最初の変更は、ifとelifのステートメントの使用に関するものです。あなたのコードでは、xが奇数ならif文が実行され、elif文は実行されません。他の数字はチェックされません。

それが最大の正の奇数よりも大きくすることはありませんので、数であっても、私はそれをゼロに設定されている場合。

数はあなたはそれが他の二つよりも多いそうではなく、テストのx> yであり、yであることを確認したい奇数の場合

>はzは、あなたは、x> yとx> zのかどうかを確認します。

最後に

、最後に彼らはすべての偶数であれば文のチェックが参照する場合。

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' 
関連する問題