python
1from d import IntBag 2 3a=IntBag() 4a.readData() 5b=IntBag() 6for i in range(a.length()): 7 k=a.get(i)**3//37 8 b.append(k)
前提・実現したいこと
クラスの変数aに,整数を読み込む。
aにある整数すべてについて,3乗の値を37で割った値(小数点以下切り捨て)をクラスの変数bに入れていく。
aとbにある整数を順番通りに比べ,大きい値の方だけを印刷する。
変数に入れるところまではいいのですが、その後がうまくいきません。例えば、1,2,7を入力すると1,2,9と返ってくるはずなのですが、9だけであったり、1,2,7,9だったりします。
初学者で申し訳ないのですがどなたかご教授願えないでしょうか。よろしくお願いします。
該当のソースコード
class IntBag: def __init__(self): self.data=[] def length(self): return len(self.data) def set(self,i,a): self.data[i]=a def get(self,i): return self.data[i] def append(self,a): self.data.append(a) def readData(self): try: while True: self.data.append(int(input("整数を入力してください:"))) except EOFError: pass def printData(self): i=0 while i<len(self.data): print(self.data[i],end=' ') i+=1 from d import IntBag a=IntBag() a.readData() b=IntBag() for i in range(a.length()): k=a.get(i)**3//37 b.append(k)
### 試したこと ### 補足情報(FW/ツールのバージョンなど) python 3
質問を編集して「該当のソースコード」部分のコードすべてがコードブロック内に表示されるようにしてください。他のコードと同様に```で囲えば良いです。
あとprintDataは呼び出さないのですか?
大変失礼いたしました。
printDataも呼び出すつもりです。
もしよろしければお願いします。
もしかして「その後」のコードもあるのだけど、その部分は掲載していないのでしょうか?
上手く行っていない部分も載せておいていただけると回答がつきやすいかと思います(ここを直せば良い、といった感じで)。
デバッグの方法として、各ステップのどこで自身が考えた流れや内容と異なっているのかを見ていくのが良いと思いますよ。最初はprintそれぞれ印字させても良いでしょうし、デバッガを利用しても良いですが。
回答2件
あなたの回答
tips
プレビュー