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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

502閲覧

Pythonでの関数の課題

itsukame

総合スコア19

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/07/07 07:06

イメージ説明
def nabeatu(n):

a.append(n) while True: if n in ('3'): a[n]="Ya!Ho!" return False else: return False print(a[n],end=",")

for i in range(61):
b=0
a=[]
nabeatu(i)

ここまでやったのですがやはり動作しませんでした。またWhileの使い方でTrueは禁止と後で言われてしまいました。どのようにすればよいか聞きたいです。

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

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

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

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

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

guest

回答3

0

宿題のたぐいでしょうか。

ご自身でもう少し学ばれた方がよろしいかと。
テキストの前半にあるかと思いますが、

  • リスト
  • if文
  • defによる関数の定義、変数の渡し方
  • (ここでは不要と思いますが)while文

の概念と使い方は基本的なものですので今一度学ばれた方がよろしいです。

Python

1a.append(n)

とaにnを追加していますが、この時点ではaが定義されていません。
以下で

Python

1a[n]="Ya!Ho!" 2(中略) 3a=[]

とされてますが意味が分からないです。リストについてご確認下さい。

Python

1while True:

なぜここでwhileを使っているのか分かりません
ループは不要かと思います。

Python

1return False 2else: 3return False

なぜFalseを返しているのかが分かりません。またif分のTrueでもElse側でも同じものを返すならば外に出した方がいいです。

Python

1if n in ('3'):

in の使い方をお調べください
Pythonで文字列を検索(〜を含むか判定、位置取得、カウント)

投稿2020/07/07 08:55

編集2020/07/07 09:26
aokikenichi

総合スコア2218

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

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

itsukame

2020/07/07 09:22

回答ありがとうございます 教師がごみ過ぎて何も教えてくれず質問しても返信してもらえなかったためこのような形を取らせていただきました。 なぜWhileをどこで使うかがわかりません。 あと3が含まれているかの判定はこれで大丈夫でしょうか? a[n]="Ya!Ho! この部分は一応3が含まれていた時にその値をYa!Ho!にするというつもりで書きました。 def nabeatu(n): a=[] a.append(n) if n in ('3'): a[n]="Ya!Ho!" print(a[n],end=",") for i in range(61): a=0 nabeatu(i)
aokikenichi

2020/07/07 09:30

すみません。説明とリンクがズレていて分かりにくいかと思いましたので回答を修正致しました。 教育環境はご同情いたしますが、テキストはないのでしょうか。またネットの記事等は読まれていますでしょうか。 if n in ('3'): は間違ってます。 in の使い方が違います。また数字と文字の比較はできません。 a=[] a.append(n) の命令にてa[n]という値になりますがa[n]="Ya!Ho!"という代入は出来ません。 リストについてお調べください また、リストを使う必要はなく、3がつくとき”Ya!Ho!"を返し、そうでないときは数字を返す という関数にすればよいと思います。
itsukame

2020/07/07 09:49

重ね重ねありがとうございます テキストやネットの記事を六時間漁った結果なんです...申し訳ないです 紹介してもらった記事はとても参考になりました テキストには cubes[1,8,27,65,125] cubes[3]=64 cubes[1,8,27,64,125] のようなことが書かれていたのでそのまま使いました。 課題の条件としてリスト使わなければいけないんです... def nabeatu(n): a=[] a.append(n) while '3'in a[n]: a[n]="Ya! Ho!" print(a[n],end=",") for i in range(61): a=0 nabeatu(i) 今このような感じで py3\temp.py", line 4, in nabeatu while '3'in a[n]: TypeError: argument of type 'int' is not iterable このようなエラーがでてしまいます
aokikenichi

2020/07/07 10:04

本気でやる気があるのでしょうか。ちょっと厳しめに申します。 エラーをググられましたでしょうか http://hakomiyo.hatenablog.com/entry/2017/10/16/164535 などすぐ出てまいります。 先ほども申しました通り数字と文字の比較は出来ないのでエラーが出ています。 他人を「ごみ過ぎる」と言っている場合ではないです 説明が不十分で失礼しましたが cubes[1,8,27,65,125] cubes[3]=64 はcubesの(0から数えて)3番目65を64に書き換えるという命令です a=[] a.append(n) でa[0]にnが入っています ので a[0]=なにか とはできますが a[n]=なにか とは出来ません(偶然n=0)ならば出来ますが望みの命令ではないと思います。 while for if リスト を使えとのこと読み飛ばしておりました。失礼致しましたが、であればそれぞれの使い方を正しく把握なさってください。 whileを使うのであればinでなく数字を文字列配列とし、1つずつ’3’と比較せよ という課題だと思います 申し訳ないですがこれで最後といたします。
guest

0

大きな課題が出た時は小さな問題に切り分けましょう。

この課題は、①「与えられた整数を1桁ずつバラバラにして」②「その中に3が含まれるか判定する」というふうにも考えられます。

① 与えられた整数を1桁ずつバラバラにする

例えば、132という整数が与えられたとき、ここから[2, 3, 1]というリストを得るにはどうすればよいでしょうか。以下に手順を示します。

  1. 空のリストを作ります。
  2. 132を10で割ったあまりを計算します。132 % 10これは2になります。それをリストに追加します。
  3. 132を10で割ります(整数の割り算)。132 / 10これは13になります。
  4. 13を10で割ったあまりを計算します。13 % 10これは3になります。リストに追加します。
  5. 13を10で割ります。13 / 10これは1になります。
  6. 1を10で割ったあまりを計算します。1 % 10これは1になります。リストに追加します。
  7. 1を10で割ります。1 / 10これは0になります。0になると、それ以降は計算する必要がないので終了します。

では、上の手順をどんな自然数が来ても行えるようなプログラムはどのように組めばいいでしょうか。while文とappend()を使って解いてください。

② リストに3が含まれるか判定する

リストに対してループするにはfor文が便利です。lstをリストとするとき、for x in lst:とするとxlstの要素が入ります。
ではこれを先程作ったリストに対して行って、その要素が3のときはアホになってreturnするようにしましょう。(for文に加えてif文を使います)
もしreturnされずループが終了するなら、そのときは要素に3が含まれないということですから、与えられた数をそのまま出力してください。

投稿2020/07/07 17:12

編集2020/07/08 01:39
magf

総合スコア212

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

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

itsukame

2020/07/08 00:54

わかりやすい回答ありがとうございます!確かに分けて考えた方が分かりやすいですね かえってきたらためしてみます!
guest

0

自己解決

def nabeatu(n):
a=[]
a.append(n)
while str(3)in str(n):
a[n]="Ya! Ho!"
print(a[n],end=",")

for i in range(61):
a=0
nabeatu(i)

投稿2020/07/07 11:24

itsukame

総合スコア19

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

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

Zuishin

2020/07/07 11:50

間違っているので低評価します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問