2012-03-24 27 views
0
Names=[0,1,2,3,4] 
Names[1]=='Ben' 
Names[2]=='Thor' 
Names[3]=='Zoe' 
Names[4]=='Katie' 
Max=4 
Current=1 
Found=False 
PlayerName=input('What player are you looking for?') 
while Found==False and Current==Max: 
    if Names[Current]==PlayerName: 
     Found=True 

    else: 
     Current+=1 


if Found==True: 
    print('Yes, they have a top score') 
else: 
    print('No, they do not have a top score') 

これはプログラムです。一番上の4つの名前のいずれかが入力されると、プログラムは「はい、最高のスコアを持っています」と表示する必要がありますが、何かが入力されると「いいえ、最高のスコアはありません。Pythonプログラム、ループは実行されていませんか?

名前が入力されても、「いいえ、最高のスコアはありません」というメッセージが返されます。私はそれがループとは何かを持っているかもしれないと思うが、何がわからないのだろう。

答えて

6

2番目の条件は逆です。

names = ['Ben', 'Thor', 'Zoe', 'Katie'] 
player_name = input('What player are you looking for?') 

if player_name in names: 
    print('Yes, they have a top score') 
else: 
    print('No, they do not have a top score') 

そのように、あなたがすべてでwhileループを必要としません:あなたは、Pythonであなたは、単にin演算子を使用してはるかにこれを行うことができ、言っ

while Found==False and Current!=Max: 

がしたいです。

+0

ありがとう、ちょうど問題であった "最新!=最大:"でした。愚かな間違い。 –

+0

他の人が指摘しているように、それ以外にも論理的な誤りがたくさんあります。 –

+0

これはこれを行う非常に 'ピジョンソニック'のようです。素晴らしい答え。 – AlexWebr

2
Names[1]=='Ben' 
... 

それは平等のチェックです(これは無関係ですが、それは、Falseを返す)、割り当てないですしたがって

、あなたのリストが変更されていない、と名前がリスト[0,1,2,3,4]に対してチェックされている、と彼らは決してそれは驚きではありません。

また、ループ条件が正しくないため、コードが実行されることはありません。

ただし、あなたのリストを反復処理、forループを使用して、あなたのプログラムがより神託の方法です書き込みin演算子を使用して、上記の提案として、または少なくとも考慮すべきです。 、あなたはこれらの比較をごwhileループで

+0

意味があります - ありがとうございます。 –

1

やっている:

Found==False and Current==Max 

Currentは常にMax!=あるループ、前1に設定されているため、条件の2番目の部分はTrueに評価することはありませんしたがって、ループ内のコードは決して評価されません。

1

はここを見て:

 
Names=[0,1,2,3,4] 
Names[1]=='Ben' 
Names[2]=='Thor' 
Names[3]=='Zoe' 
Names[4]=='Katie' 

これは、あなたがそれがないと思う何をしません。その後、Names[0, 1, 2, 3, 4]に等しくなります。次の数行は、Namesに名前を割り当てませんが、要素が名前と等しいかどうかだけを確認します。たとえば、Names[1]=='Ben'は、Namesの2番目の要素がBenと等しいかどうかをチェックします(したがって、これはTrueまたはFalseと評価されます)が、結果は何も行われません。

1

最初のCurrent = 1とMax = 4のため、ループ内にコードが入力されることはありません。

1

BASICをPythonでプログラミングしようとしていますか? :-)

他は、それがうまくいかない理由に答えました。これらの変更を行ったとしても、プログラムはPythonよりもBASICのように見えます。

次の操作を実行する必要があります。

  1. 使用インデックスとしても0。 0..4を割り当て、1..4を使用します。ちょうど0..3を使用してください。
  2. whileループの代わりにfor item in listobject:のリストを反復処理します。
  3. だけ大文字を開始すると、あなたの変数に名前を付けないでくださいif Found:
  4. を使用し、if Found==True:しないでください - これらの名前は、クラスのためのものです。 Foundの代わりにfoundを使用してください。
関連する問題