2016-03-28 26 views
-3

以下の手順です:このプログラムは、メニュー駆動型インターフェースを使用して記述する必要があります。次のように、少なくとも6つの関数を含める必要があります(他の関数が必要と思われる場合は、さらに多くの関数を含めることができます)。それらの機能を適切に記述するためには、記述的な関数名を選択する必要があります(適切な命名関数の規則に従ってください)。ちょうど明確にするために、function1、function2などと呼ばれる関数を持つべきではありません。以下の名前をあなたのコード内の独自の関数名で置き換えてください。インデントの問題は何ですか? Python、ロックペーパーはさみゲーム

私が実行すると、if comp(==1 and user ==3)の行に「インデントされたブロックが必要です」というエラーコードが表示されます。

どうかありがとうございます、ありがとう!

#import random module 
import random 
#main function 
def main(): 
    #program message 
    print("Rock, Paper, Scissors Game") 
    #initializing variables that would hold choices of user and computer 
    comp = 1 
    user = 1 

while comp == user: 
    print("Enter your choice in range from 1 to 3") 
    #prompt user to enter choice 
    user = int(input("Your choice: ")) 
    #randomly assign choice to computer 
    comp = random.randint(1,3) 
    #display choice of computer 
    print("Computer Choice : ",comp) 
    #display game drawn message, when same choices 

if (comp == user): 
    print("Game Drawn. Select again") 
    #calling function to decide winner 
    winner (comp, user) 
    #winner function 
    def winner(comp, user): 
    #rock and scissor choice 

if(comp == 1 and user ==3): 
    print("Computer win") 
print("The rock smashes scissor") 
    elif(comp == 3 and user ==1): 
     print("User win") 
     print("The rock smashes scissor") 
    else: 
    #paper and rock choice 

if(comp == 1 and user == 2): 
    print("User win") 
    print("The paper wraps rock") 
     elif (comp == 2 and user ==1): 
      print("Computer win") 
      print("Scissors cut paper") 
     elif (comp == 2 and user == 3): 
      print("User win") 
      print("Scissors cut paper") 
     else: 
      print("Invalid selection") 
      #calling main function 

main() 
+0

直前の行は 'def'でインデントされたブロックが必要ですが、あなたはそれを持っていません。 – TigerhawkT3

+4

ここでは、列挙できるよりも多くのインデント問題があります。 –

+0

@FredLarson - もっと徹底的に見ると、あなたは絶対に正しいです。それはすべての種類の混乱している。 – TigerhawkT3

答えて

0

問題は、前のコード行である:

def winner(comp, user): 

defは、関数を定義し、その機能は本体を有することが期待されます。インデントをトップレベルに戻すので、def本文には何もありません(passもありません)。したがって、コンパイルされません。

ただし、これはあなたの唯一のインデントの問題ではありません。 mainの定義は、1行にprint("Rock, Paper, Scissors Game")を出力し、いくつかの変数と終了を設定します。 while comp == user:の字下げはレベルを戻すため、mainの定義内には存在しません。これは、コードのほとんどすべての新しいブロックの問題です。あなたはどのようにPython structures code with indentationを読む必要があります。

2

Nathaniel Fordの回答以外にも、if-elif-else indendationはいくつかの場所で間違っています。

if (condition): 
    print "hi" 
elif (condition): 
    print "hi again" 
else: 
    print "hi again vol3" 

これは、if-elif-else条件を指定する正しい方法です。

+0

'if'構造体(およびループのようなさまざまなインデントレベルを必要とするその他のもの)には、独自のスコープがありません。 – TigerhawkT3

+0

あなたは正しいです。混乱を避けるために投稿を編集します。 –

関連する問題