• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:pythonのコードで原因不明のエラーが出ます。)

Pythonコードで原因不明のエラーが発生 - タイトル

このQ&Aのポイント
  • Pythonのコードで原因不明のエラーが発生します。エラーメッセージは「can't multiply sequence by non-int of type 'float'」です。
  • コードでは、リストの中からランダムに値を選び、回答の正誤に応じて次の出題の確率を制御しています。
  • エラーの解決方法は、シーケンス型のデータに非整数の値を掛けてしまっている可能性があるため、データの型を確認し、適切に修正することです。

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

エラーメッセージからはわかりにくいですけど、 numpy.ones_like()の仕様を確認しましょう。 w=np.ones_like(true_ans) で、wに入っているものが何なのかわかれば、 どこがいけないのかわかるかと。

hf-sbf5
質問者

お礼

回答ありがとうございます。以下のように修正する事で、無事動作しました。 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")

その他の回答 (1)

回答No.1

>>a_Q=random.choices(queries,k=1,weights=w) で浮動小数点が返されているのではないでしょうか?

hf-sbf5
質問者

お礼

回答ありがとうございます。以下のように修正する事で、無事動作しました。 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")

関連するQ&A