- ベストアンサー
Pythonコードで原因不明のエラーが発生 - タイトル
- Pythonのコードで原因不明のエラーが発生します。エラーメッセージは「can't multiply sequence by non-int of type 'float'」です。
- コードでは、リストの中からランダムに値を選び、回答の正誤に応じて次の出題の確率を制御しています。
- エラーの解決方法は、シーケンス型のデータに非整数の値を掛けてしまっている可能性があるため、データの型を確認し、適切に修正することです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エラーメッセージからはわかりにくいですけど、 numpy.ones_like()の仕様を確認しましょう。 w=np.ones_like(true_ans) で、wに入っているものが何なのかわかれば、 どこがいけないのかわかるかと。
その他の回答 (1)
- Ultra-Hetare
- ベストアンサー率38% (204/526)
>>a_Q=random.choices(queries,k=1,weights=w) で浮動小数点が返されているのではないでしょうか?
お礼
回答ありがとうございます。以下のように修正する事で、無事動作しました。 import numpy as np import random true_ans=["those foods enable us to get nutrition even in developing countries", "there are vast numbers of starving children or breadwinners"] queries=["those foods enable us to get nutrition even [mask] developing countries", "there are vast numb[mask] of starving child[mask] or breadwinn[mask]"] for i in range(2): w=[] w=np.ones_like(true_ans,dtype="int8")#intが無かった a_Q=random.choices(queries,k=1,weights=w) str_a_Q="".join(a_Q) #choicesから出された後リスト型になっていた為、変換する print(a_Q,type(a_Q)) #type関数を使う idx=queries.index(str_a_Q) in_ans = input("input answear") if in_ans == true_ans[idx]: w[idx] -= 1 print("t")#tではなく“t”とすべきだった。 else: w[idx] += 2 print("f")
お礼
回答ありがとうございます。以下のように修正する事で、無事動作しました。 import numpy as np import random true_ans=["those foods enable us to get nutrition even in developing countries", "there are vast numbers of starving children or breadwinners"] queries=["those foods enable us to get nutrition even [mask] developing countries", "there are vast numb[mask] of starving child[mask] or breadwinn[mask]"] for i in range(2): w=[] w=np.ones_like(true_ans,dtype="int8")#intが無かった a_Q=random.choices(queries,k=1,weights=w) str_a_Q="".join(a_Q) #choicesから出された後リスト型になっていた為、変換する print(a_Q,type(a_Q)) #type関数を使う idx=queries.index(str_a_Q) in_ans = input("input answear") if in_ans == true_ans[idx]: w[idx] -= 1 print("t")#tではなく“t”とすべきだった。 else: w[idx] += 2 print("f")