前提・実現したいこと
下記コードのテストコードをpassさせたいです。
2種類属性の数値の分散と標準偏差を計算するコードです。
入力は
入力の一行目:これから入力される個数n
以降の入力(n個):2種類の数値
です。
具体的な入力値と予想される出力
それに誤っている私の出力です
##入力
入力値 行数: 6
5
299 6
327 5
178 0
432 2
437 2
##出力
pass
9164 96
5 2
誤っている出力(私)
9165 96
5 2
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
ひとつめの9164になるところ9165になってしまうのですが アルゴリズムがわかりません。
該当のソースコード
test.py
1import numpy as np 2import math 3import numpy 4from decimal import Decimal, ROUND_HALF_UP, ROUND_HALF_DOWN 5 6 7#math.sqrt(x) 8#numpy.sqrt(array) 配列の要素の平方根 9#https://www.mathpython.com/ja/python-number-ceil/ 10#数値の切り上げと切り下げ 11def num_round(x): 12 if (x*10)%10 >= 5: 13 x = str(x) 14 x = Decimal(x).quantize(Decimal('0'), rounding=ROUND_HALF_UP) 15 else: 16 x = Decimal(x).quantize(Decimal('0'), rounding=ROUND_HALF_DOWN) 17 return x 18 19n = int(input()) 20x = np.zeros(n) 21y = np.zeros(n) 22for i in range(n): 23 xi, yi = map(int, input().split()) 24 x[i] = xi 25 y[i] = yi 26 27aveX = int(sum(x)/n) 28aveY = int(sum(y)/n) 29#print(aveY) 30 31 32aveX2 =0 33aveY2 =0 34 35for i in range(n): 36 aveX2 += (x[i] -aveX)*(x[i] -aveX) 37 #print(aveX2) 38 aveY2 += (y[i] -aveY)*(y[i] -aveY) 39 #print(aveY2) 40 41### 重さの分散 42var_x = aveX2/n 43#print(var_x) 44### 重さの標準偏差 45std_x = math.sqrt(var_x) 46 47var_x = num_round(var_x) 48std_x = num_round(std_x) 49### 糖度の分散 50var_y = aveY2/n 51 52### 糖度の標準偏差 53std_y = math.sqrt(var_y) 54 55var_y = num_round(var_y) 56std_y = num_round(std_y) 57 58 59print(var_x, std_x) 60print(var_y, std_y)
試したこと
int(x)→round(x)→Decimalを試しました。
補足情報(FW/ツールのバージョンなど)
TechFulの練習問題です
回答2件
あなたの回答
tips
プレビュー