2017-07-21 8 views
-7

私はこのコードを私の心の中で処理して、出力を得ようとしています。私は真ではない答えとして1を得ています。なぜ誰かが説明できますか?次のPythonコードでは何が起こっていますか?

def testString(aString): 
    aDict = {} 
    for letter in aString: 
     num = aString.count(letter) 
     if num not in aDict: 
      aDict[num] = letter 
     else: 
      return num 
    return -1 


text = 'eager' 
print(testString(text)) 

ループの各反復:

def testString(aString): 
    aDict = {} 
for letter in aString: 
    num = aString.count(letter) 
    if num not in aDict: 
     aDict[num] = letter 
    else: 
     return num 
return -1 


text = 'eager' 
print(testString(text)) 
+0

あなたが出力として何を期待していますか? – dawg

+0

インデントを修正する必要があります – dawg

+0

出力として-1が必要です。それは練習テストの裏で正しい答えです – yapancha

答えて

1

私はあなたのコードをフォーマットしました

# First iteration 
aDict = {} 
letter = 'e' 
num = 2 
if 2 not in aDict: #True 
    aDict[2] = 'e' 
else: 
    return 2 

# Second iteration 
aDict = {2: 'e'} 
letter = 'a' 
num = 1 
if 1 not in aDict: #True 
    aDict[1] = 'a' 
else: 
    return 1 

# Third iteration 
aDict = {2: 'e', 1: 'a'} 
letter = 'g' 
num = 1 
if 1 not in aDict: #False 
    aDict[1] = 'g' 
else: 
    return 1 #returns 1 
+0

私はコンピュータ上でコードを実行しようとしましたが、出力は-1でした。私は理由を知りません。私もそれは1だと思った。しかし答えは-1です。私はなぜそれを取得しません。 – yapancha

+0

あなたのインデントが間違っている可能性があります。 'return -1'が' for'ループの中にないことを確認してください。 –

0

eaを見た後、aDict{2: 'e', 1: 'a'}です。 gを見ると、numはもう1であり、すでにaDictのキーなので、1が返されます。

+0

コンピュータでコードを実行しようとしましたが、出力は-1でした。私は理由を知りません。私もそれは1だと思った。しかし答えは-1です。私はなぜそれを取得しません。 – yapancha

+0

あなたは元々、「熱心な人」を入力として1つを持っていたと言いました.1つで、何か違うものが得られたら、コードや入力などを変更したに違いありません。 –

0

これは言葉で説明するのが最も簡単なコードスニペットではありません。この関数は、文字が何回表示されるかを効果的に追跡し、直前の文字と同じ回数表示される2番目の文字を検出すると、その文字の外観の数を返します。

この例では「E」「」は、一度表示され、コードはここで終了し、戻ります一度「G」はまた表示され、二回表示されますので、「1」

関連する問題