質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

962閲覧

関数の知識が曖昧で「正の整数からなるリストaを引数にとり、aの要素の中で3の倍数の個数を返す関数count3(a)を定義せよ。」という問題に手を付けられません。

Angela_Nakasugi

総合スコア3

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/09/20 07:33

編集2021/09/20 08:09

前提・実現したいこと

「正の整数からなるリストaを引数にとり、aの要素の中で3の倍数の個数を返す関数count3(a)を定義せよ。」という問題をおこなっているのですが、手の付けようがなく困っています。お手数をおかけしますが、当問題のコードとそのコードがどのような仕組みで動いているのかをご教授いただければ幸いです。

発生している問題・エラーメッセージ

「1~100の数の中で3の倍数の個数はいくつあるか。」といった関数の絡んでいない問題であれば解くことはできるのですが、 関数についての知識が不足しており今回の問題が解けません。 リストaの要素の中で3の倍数の個数”を数えるコード =>a=range(1,100) b=0 for i in a: if i%3==0 b+=1 print(b)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/09/20 07:44

> 当問題のコードとそのコードがどのような仕組みで動いているのかをご教授いただければ幸いです。 「すでに書かれたコードがあって、それについて解説して欲しい」という状況なら、当該のコードをご提示いただければと思います。
Angela_Nakasugi

2021/09/20 07:51

問題のみでコードについては分からない状況となってます。
otn

2021/09/20 07:52

まずは「正の整数を引数に取り、3の倍数かどうかをTrue Falseで返す関数」を作って見ましょう。
meg_

2021/09/20 08:02

”リストaの要素の中で3の倍数の個数”を数えるコードは作成できますか?できる場合はコードを質問に追記しましょう。 また、”関数の知識が曖昧”とのことですが理解している部分は何ですか?
Angela_Nakasugi

2021/09/20 08:11

>>otn 様 現状まだ手を付けられません。 >>meg_ 様 追記させていただきました。関数について理解できているのは原理のみです。
Angela_Nakasugi

2021/09/20 08:24

a,bという引数について、a+bの答えを返り値とする関数という理解であってるでしょうか。
meg_

2021/09/20 08:29

コメントが行き違いになってしまいました。解決されたようで良かったです。
Angela_Nakasugi

2021/09/20 08:30

皆様のおかげで無事解決しました。ありがとうございます。
guest

回答2

0

ベストアンサー

手の付けようがなく困っています。

まずは、何が必要なのか分解してみましょう。

  1. (関数ということはいったん脇においておいて)リストaの要素のうち、3の倍数である個数を数える
  2. 上のコードを関数化する

投稿2021/09/20 07:37

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Angela_Nakasugi

2021/09/20 07:42

ご回答ありがとうございます! 手順1は出来たのですが、やはり手順2をやるときに詰まってしまいます・・・
maisumakun

2021/09/20 07:42

関数について、どのような情報源にあたっていますか?
Angela_Nakasugi

2021/09/20 07:47

初学者の1冊目としてオススメされた「たった1日で基本が身に付く! Python超入門」(www.amazon.co.jp/dp/B074WVKQVP)という本を情報源としております。
maisumakun

2021/09/20 07:49

関数について書かれた部分を読んで、何がわからないのか整理はできますか?
Angela_Nakasugi

2021/09/20 07:54

原理などについては理解できているとは思うのですが、何が分からないのかが分かっていない状態です・・・ 次元の低い返答で申し訳ありません。
maisumakun

2021/09/20 07:57

とりあえず、「何も引数を取らない、何も返さない関数」を書くことはできますか?
maisumakun

2021/09/20 08:05

Pythonの場合、インデントでブロックを決めるので、中身がなくてもとりあえずpassを書いて置かなければいけません。 それはさておき、関数ができたのですからあとは引数・返り値・中身の処理を組み込んでいくだけです。
Angela_Nakasugi

2021/09/20 08:14

なるほど。ありがとうございます。 例えば、正の整数からなるリストaが[123,456,789]とするときコードの何処の位置に加えればいいのでしょうか。
maisumakun

2021/09/20 08:16

関数の引数は「使う側」が与えるものなので、関数を書くときには書きません。受け取る仮引数のaだけ書いてください。
Angela_Nakasugi

2021/09/20 08:18

分かりました!ご丁寧にありがとうございます。
guest

0

「引数を1つ取り、その値を2倍にした値を返す関数double_n」は以下のとおりです。

python

1def double_n(n): 2 ans = n * 2 3 return ans

これが理解できるなら、以下をごらんください。
わからないのであれば、関数について基本的な勉強をしてからお読みください。

提示されたコードから始めましょう。

python

1a=range(1,100) 2b=0 3 for i in a: 4 if i%3==0 5 b+=1 6print(b)

このコードは、間違えがあるので動きません。
pythonではインデントがプログラムの構造を決めるのですが、そのインデントが適切ではありません。
また、構文も間違えています。

python

1a=range(1,100) 2b = 0 3for i in a: 4 if i % 3 == 0: 5 b += 1 6print(b)

これを関数にしてみましょう。

正の整数からなるリストaを引数にとり、aの要素の中で3の倍数の個数を返す関数count3(a)を定義せよ。

python

1def count3(a): 2 return b

入口と出口だけ書くとこうなります。
このままではエラーになりますので、先程の処理を中に入れます。

python

1def count3(a): 2 a=range(1, 100) 3 b = 0 4 for i in a: 5 if i % 3 == 0: 6 b += 1 7 print(b) 8 return b

ここで、

  • 式の中のaは引数で与えられるので、 生成する必要はないのでa=の行は削除
  • bは3な倍数の個数を持つ変数なので、これをprintするのでなく出力にする。

python

1def count3(a): 2 b = 0 3 for i in a: 4 if i % 3 == 0: 5 b += 1 6 return b

こんな感じです。

投稿2021/09/20 08:38

編集2021/09/20 08:39
TakaiY

総合スコア12774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Angela_Nakasugi

2021/09/20 08:43

とても分かりやすく詳細なご回答ありがとうございます! どういった工程で行えばいいのかが明白になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問