2022年03月11日

正解に近づいたか。関数のimport。python日記-32-α

「関数 meanを含むモジュール」と書いてあるのを
確認し忘れて、勝手に自己流でやってしまいました。

practice25.py
#!/usr/bin/env python3

import numpy as np

def av(nums):
list = [nums]
return list
if __name__ == "__main__":
li = [1,2,3,4,5,6,7]
print("List is: ", li)
print("Average is: ", np.mean(li))

practice26.py
#!/usr/bin/env python3

import practice25

ls = list(map(int, input("平均値をお出しします。\n\
任意の整数を2つ以上、\n\
半角スペースで区切って\n\
入力してください = ").split()))
print("\n")
print("Entered Numbers: ", ls)
print("Average is: ", practice25.np.mean(ls))
print("\n")


average_score-2_2022-03-11_19-14-33.jpg

mean単体の関数はないみたいなのですが、主張に自信なし。
(出題は、python2前提です)
やるなら、statistics.meanか、np.meanのような。

関数名のところで、def av.np.mean(nums): とかやると、
文法違反みたいな表示が出ました。

答えは、総和に対してlen関数の値で割り算したときと同様。
正しい数値が出ます
でも、出題者の要求(狙い)に沿っている自信は
ありません。出題文上の要求は
満たしていると思いますが。

lenの値を使って割り算するほうが、
シンプルじゃないですかね。


posted by ブログ開設者 at 22:16| Comment(0) | linux | このブログの読者になる | 更新情報をチェックする

(解答は条件を満たしていませんでした、修正中です)心折れかけ、関数のimport。python日記-32

課題 :与えられたリスト中に含まれる数の平均値を求める関数 mean を含むモジュール calc2 を作成しましょう。次に、imp_test2 の中で calc2 モジュールを取り込み、ユーザから入力された複数の数の平均値を求めるプログラムを作成しましょう。

課題のまえの説明に出てくるコード(test20.py)
#!/usr/bin/env python3

def sum(nums):
total = 0
for num in nums:
total += num
return total
if __name__ == "__main__":
sample_list = [ 2,5,7,10 ]
print("List is: ", sample_list)
print("Total is: ", sum(sample_list))

上のコードをモジュールとしimportしたコード(test21.py)

#!/usr/bin/env python3

import test20

test_list = [1, 3, 9, 10 ]
print("List is: ", test_list)
print("Total is: ", test20.sum(test_list))

実行結果
example_function__2022-03-11_10-07-14.jpg

def以下、if行未満の関数の意味が解らず、おまじない
なのかな、てな調子でした。ちゃんと意味のあることが
切れかけの蛍光灯のような点灯の遅さで理解しました。

理解するため、値を代入してのテストprint(test24.py)
#!/usr/bin/env python3

def sum(nums):
total = 0
for num in nums:
total += num
return total
print(sum((8, 2, 3, 0, 7)))

example_check_2022-03-11_10-17-57.jpg
リストの中身の総和を出す働きがちゃんとありました。
printで、(())と括弧を二重にするみたいですね。

で、課題の解答です。importされるコード(practice25.py)
#!/usr/bin/env python3

def sum(nums):
total = 0
for num in nums:
total += num
number = len(nums)
average = total / number
return average
if __name__ == "__main__":
li = [1,2,3,4,5,6,7]
print("List is: ", li)
print("Average is: ", sum(li))

トータルして、要素個数で割るところを、最初、
if以下に書いてしまって、importが上手くできませんでした。
つまり、上のdef関数を無視した形になっていました。
関数内に、トータルして割る、を入れ込んで上手く行きました。

importするコード(practice26.py)
#!/usr/bin/env python3

import practice25

ls = list(map(int, input("平均値をお出しします。\n\
任意の整数を2つ以上、\n\
半角スペースで区切って\n\
入力してください = ").split()))
print("\n")
print("Entered Numbers: ", ls)
print("Average is: ", practice25.sum(ls))
print("\n")


average_score_2022-03-11_13-32-48.jpg

初めて出てきたかも知れない。
map()は、リストの全要素にアクセスできるようにする。
split()は、数値を切り離して要素化する。

for文でできるらしいですが、
ループの理解が足りず、直線的に
できる方法を探しました。
for文でやれ、とは課題に書いていない!!!

二連続での諦めムードが漂い始めていました。
プログラミングは、やっぱり勉強ができるアタマの
ほうがたんぜんいいと思います。
アクセスが欲しいから、ようつべ先生たちは、
四足演算(つまり算数)が理解できる程度の頭さえあれば、
プログラミンはやれる!と強くおっしゃいますが、、、
数学だけでも偏差値的は、60以上あったほうが、、、。
勉強のできない子供の頃の忘れかけていたトラウマが、
蘇ってくる、イヤーーな感覚です。

アタマの整理の早い人間に生まれたかった!


posted by ブログ開設者 at 13:42| Comment(0) | linux | このブログの読者になる | 更新情報をチェックする