2017-01-26 3 views
1

私は非常に初心者のプログラマーであり、Pythonではさらに初心者です。関数に渡された文字が大文字か小文字かを検出しようとしています。Python:文字の大文字をチェックする

def encode(char, key, position, skipped): 

if char.islower() == True: 
    ascii_offset = 97 
if char.isupper() == True: 
    ascii_offset = 65 
else: 
    print("You dun goofed laddie") 
    exit(2) 
... 
return char 

この関数は 'else'ステートメントで終了します。しかし、私は実際に文字が実際に関数に渡されていると確信しています...

+2

変更 'elif' – inspectorG4dget

+0

に二' if'が働いていたこと、ありがとうございましたこと:!だから、elifのが目的の動作を実装します使用して

私はあまりにも理由がわからない...しかし、私は非常に感謝しています – Tikhon

答えて

1

@Tikhonが書いた:説明

「私はなぜあまりにもわからないんだけど...しかし、私は非常に感謝しています働いていたこと、ありがとうございました!」:文字が小文字の場合は、最初の実行ブロックの場合。 しかし、コードの実行は次のifブロックに繰り返し実行され、False(最初がTrueであると仮定して)であるため、elseケースを実行します。

if condition A: 
    do something 
elif condition B: 
    do something else 
else: 
    do some default case 
3

問題は2つのif文を持ち、2つ目にelseがあります。あなたのような何かをしたい:

def encode(char, key, position, skipped): 

    if char.islower(): 
    offset = 97 
    elif char.isupper(): 
    offset = 65 
    else: 
    print("Somethings wrong") 
    exit(2) 

return char 

二つの文を使用すると、小文字で送信する場合、それは常にelse文が実行されますので、失敗することが生じた場合。第2のifステートメントは、if this is not an upper case letter, exit(2)と言っています。だから、小文字であれば、終了するでしょう。また、あなたの圧痕を見てください。 Pythonがどのようにコードブロックを分離するか

関連する問題