2017-06-17 9 views
-1

これは問題を抱えている配列ランダム数学プログラムです。このプログラムは、5つのランダム乗算の数学的問題を解決するようにユーザーに促すことです。最初の数字は1から12まで、2番目の数字は5から15までです。どちらの数字も配列に格納されます。私は画面に質問を表示し、正しい答えを入力するようにユーザーに指示する必要があります。次に、ユーザーの回答を3番目の配列に格納する必要があります。次に、見出しを付けて2つのグループに質問を表示する必要があります。例えば配列ランダム乗算の数学

正しい回答

5×12 = 60

4×10 = 40

9×12 = 108の

不正解

12 ×12 = 142

8×13 = 94

終わりに、私は彼らがここ5

のうち、正しいましたどのように多くのユーザーに伝える必要があり、これまでに私のコードです:

SB='' 
import random 

N1=[0 for x in range(5)] 
for i in range(5): 
    N1[i]=random.randrange(13) 

N2=[0 for x in range(5)] 
for i in range(5): 
    N2[i]=random.randrange(16) 

ANS=[0 for x in range(5)] 
for i in range(5): 
    Q=print(N1[i],'x',N2[i]) 
    C=N1[i]*N2[i] 
    ANS[i]=int(input('Enter an Anwser:')) 
    if ANS[i]==C: 
     print('Correct') 
    elif ANS[i]!=C: 
     print('Incorrect') 
    print(SB) 

for i in range(5): 
    ANS[i]=Q 

print('Correct Anwsers') 
for i in range(5): 
    if ANS[i]==C: 
     print(N1[i],'x',N2[i],ANS[i]) 

print('Incorrect Anwsers') 
for i in range(5): 
    if ANS[i]==C: 
     print(N1[i],'x',N2[i],'=',ANS[i]) 

I 3番目の配列にユーザーの回答を格納し、上記のように表示する方法で正しい答えと誤った回答の2つのカテゴリに表示するのに問題があります。私はアキュムレータの計算にも問題があります。あなたがこのコードを理解する手助けができれば、それは素晴らしいことでしょう。ありがとうございました。

+0

インデントを修正してください... _please_。 –

+0

コードを編集していただきありがとうございます – Nada

答えて

0

ループコードを削除するだけで、値Qをすべての回答に割り当てることができます。また、最後の2つのループでCとの回答を比較すると、最後にCの値と比較されます。削除しなければならないコードは次のとおりです。

for i in range(5): 
    ANS[i]=Q 

これは、右のコードです:

SB='' 
import random 

N1=[0 for x in range(5)] 
for i in range(5): 
    N1[i]=random.randrange(13) 

N2=[0 for x in range(5)] 
for i in range(5): 
    N2[i]=random.randrange(16) 

ANS=[0 for x in range(5)] 
for i in range(5): 
    print(N1[i],'x',N2[i]) 
    C=N1[i]*N2[i] 
    ANS[i]=int(input('Enter an Anwser:')) 
    if ANS[i]==C: 
     print('Correct') 
    elif ANS[i]!=C: 
     print('Incorrect') 
    print(SB) 

print('Correct Anwsers') 
for i in range(5): 
    if ANS[i]==N1[i]*N2[i]: 
     print(N1[i],'x',N2[i],ANS[i]) 

print('Incorrect Anwsers') 
for i in range(5): 
    if ANS[i]!=N1[i]*N2[i]: 
     print(N1[i],'x',N2[i],'=',ANS[i]) 
+0

ありがとうございました。 – Nada

0

あなたはまた、上書きされNoneType

Q=print(N1[i],'x',N2[i]) 

あるprint()Q戻り値を割り当てますANS値がNoneTypeのリスト:

for i in range(5): 
    ANS[i]=Q 

また、同じ条件を使用して正しいと正しくないためANSリストをチェックしている:

if ANS[i]==C: 

条件は、Cが更新されることはありませんそのループで、正しく動作しないこと。あなたはあることを起こるCの同じ値に対するすべての答えをチェックしている:

C=N1[i]*N2[i] 
0

問題は、あなたがCの最新の値ではなく、質問への答えにANSを比較していることのようです。 Qは不要ですが、代わりにリストに回答を保存することができます。

正解にno =を含む2つの間違いもありました。最初の数字として0を得ることができ、最後の数字は5を超えていなくても固定しました。

ここでは、コードの私のバージョンです:

SB='' 
import random 

N1=[0 for x in range(5)] 
for i in range(5): 
    N1[i]=random.randrange(1, 13) 

N2=[0 for x in range(5)] 
for i in range(5): 
    N2[i]=random.randrange(5, 16) 

ANS=[0 for x in range(5)] 
C=[0 for x in range(5)] 
for i in range(5): 
    C[i]=N1[i]*N2[i] 
    print(N1[i],'x',N2[i]) 
    ANS[i]=int(input('Enter an Anwser:')) 
    if ANS[i]==C[i]: 
     print('Correct') 
    elif ANS[i]!=C[i]: 
     print('Incorrect') 
    print(SB) 

print('Correct Anwsers') 
for i in range(5): 
    if ANS[i]==C[i]: 
     print(N1[i],'x',N2[i], '=', ANS[i]) 

print('Incorrect Anwsers') 
for i in range(5): 
    if ANS[i]==C[i]: 
     print(N1[i],'x',N2[i],'=',ANS[i]) 

ホープ、この助けました!