一覧

2016-09-25 8 views
0

私はこのようになります機能があります。一覧

class Question: 
    Ans = ""; 
    checkAns = 0; 
    isPos=False; 
    def Ask(Q, PosAns): 
     checkAns=0; 
     Ans = raw_input("{} ({})".format(Q,PosAns)); 
     while(checkAns<len(PosAns) and isPos!=True): 
      if(Ans==PosAns[x]): 
       isPos=True; #if it IS a possible answer, the loop ends 
      checkAns+=1; 
      if(checkAns==len(PosAns)): 
#If the loop goes through all the possible answers and still doesn't find a 
#match, it asks again and resets checkAns to zero. 
       Ans = raw_input("{} ({})".format(Q,PosAns)); 
       checkAns=0; 
     return ("Good Answer"); 

ques = Question(); 
print(ques.Ask("Do you like to code?",["Yes","No"])); 

まずオフを、この関数のポイントは、質問(Q)で取ることですし、可能なすべての答え(PosAns)であり、ユーザが可能な回答の1つではないものを入れると、関数は単に再び質問します。

しかし、Ask()関数は2つのパラメータしか扱えず、3つ与えました(YesNoには2つの文字列があることに注意してください)。リストをパラメータとして扱うのではなく、リストのオブジェクトを読み取るのはなぜですか?どのように私はそれがパラメータとしてリストを取ることができますか?

私がコードする方法は、大抵の人にとってはラウンドアバウトで、奇妙なものだと認識していますが、それは私にとって意味をなさない方法です。私は、関数全体を書く新しい方法(私はまだそれに取り組んでいる)よりも私の質問への答えにもっと興味があります。

+1

であるかを把握することができwann't薄くなるものの 自己は、この例では

isPoscheckAnsans変数などのコールの他の属性を参照するために使用することができますあなたは '自己 'を欠いている。 – Kevin

+0

正確です。それがエラーの理由です。 Askメソッドに 'self'パラメータがありません – Joe

答えて

0

メソッド宣言で 'self'が見つかりませんでした。すべてのクラスメソッド(静的メソッドを除く)は、最初の引数がselfである必要があります。自己は暗黙のうちに渡されているので、私たちのメソッド呼び出しには表示されません。 1は、私がここにx if (Ans == PosAns[x])

class Question: 
Ans = ""; 
checkAns = 0; 
isPos = False; 

def Ask(self, Q, PosAns): 
    Ans = raw_input("{} ({})".format(Q, PosAns)); 
    while (self.checkAns < len(PosAns) and self.isPos != True): 
     if (Ans == PosAns[x]): 
      isPos = True; # if it IS a possible answer, the loop ends 
     self.checkAns += 1; 
     if (self.checkAns == len(PosAns)): 
      # If the loop goes through all the possible answers and still doesn't find a 
      # match, it asks again and resets checkAns to zero. 
      self.Ans = raw_input("{} ({})".format(Q, PosAns)); 
      self.checkAns = 0; 
    return ("Good Answer"); 
+0

'x'はそこに存在するはずではありませんが、実際には私が質問するたびに全体を書き出すため、この関数を作成していました。別のプロジェクトの一部からコードの大部分をコピーしたので、 'x'は他のプロジェクトのものです。ありがとうございました! –

+0

@CharlieBiggsこのように問題を解決しましたか? –

+0

はい、ありがとう! –