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

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

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

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

Q&A

3回答

1127閲覧

[python]整数を3桁ごとに「,」で区切って表示する

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

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

0グッド

0クリップ

投稿2018/05/17 07:02

編集2018/05/17 07:07

前提・実現したいこと

任意の正の整数を3桁ごとに「,」で区切って表示する関数を作成したい。
ただし、以下の再帰アルゴリズムを用いなさい。
もしnが3桁以下ならば、ただそれを表示する。
そうでなければ、n/1000を再帰呼び出し(上位桁を表示)してから、「,」と 下3桁(n%1000)を表示する。

以上のコードを書いています。
一歩目から躓いております。
大変図々しいとは十分感じておりますが、参考比較させていただきたいので、非再帰版も合わせてどなたかコードを書いていただけませんでしょうか。
特に「n/1000を再帰呼び出し(上位桁を表示)してから、「,」と 下3桁(n%1000)を表示する。」の部分が難しく感じています。よろしくお願いいたします。

###コード

n=int(input('任意の正の整数を入力:'))

if n < 1000:
print(n)
elif n > 1000:

ここから躓いております。。

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

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

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

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

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

LouiS0616

2018/05/17 07:21

関数の書き方とか、そのようなものは講義/研修では教わらなかったのでしょうか?
guest

回答3

0

「考え方を掴みそれを応用する」ことがプログラミングで一番大事です。

再帰の非常に単純な例として階乗の定義を挙げますと

python

1def factorial(n): 2 if n == 0: 3 return 1 4 else: 5 return n * factorial(n - 1)

数学でいう漸化式の定義をそのまんま表現できるのが再帰です。

factorial(n) は
1: ただしn==0のとき
n * factorial(n - 1): ただしn>0のとき

という感じですね。あるいは「元の問題をより小さな問題に分割して分割した問題を解くのは自分自身を呼び出すことによって結果が求まると仮定した方法」というような表現もできます。

上のコードの「表面」ではなく、そこに含まれてる「考え方」を掴んでください。

ちなみに再帰でない版は次のような感じです。

python

1def factorial(n): 2 r = 1 3 for i in range(1, n): 4 r *= i 5 return r

「問題そのものの答えを知ってしまうこと」は訓練の邪魔にもなりかねないので止めときます。(閲覧者のどなたかが回答する可能性もありますが・・・)

投稿2018/05/17 07:27

編集2018/05/17 09:18
KSwordOfHaste

総合スコア18394

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

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

0

基本的な形はこんな感じ。

python

1def saiki(n): 2 if n < 1000: 3 print(n) 4 else: 5 saiki(n/1000) 6 print(",") 7 print(n%1000)

意図した出力にはならないと思うので、頑張ってデバッグしてくださいな。

投稿2018/05/17 07:27

hayataka2049

総合スコア30933

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

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

0

投稿2018/05/17 07:05

y_waiwai

総合スコア87747

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問