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

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

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

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Python

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

Q&A

解決済

2回答

3404閲覧

pythonで等比数列の一般項を求める。

kunikuni96

総合スコア16

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Python

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

1グッド

1クリップ

投稿2019/07/29 02:31

編集2019/07/29 03:01

python

1f(0)=1 2f(1) = 2*f(0)+1 3f(2) = 2*f(1)+1

前提・実現したいこと

等比数列の第100項を求める方法を考えています。
求めたい等比数列の一般項は
a_n=a_1+(n-1)*2
です。第100項にn=100を代入する方法ではなく、
a_1にa_0を代入する。
a_2にa_1を代入する。
a_3にa_2を代入する。
………
a_100にa_99を代入する。
という形で求めたいです。
繰り返し構文を作る前にa_2を求めようとしました。

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

can't assign to function call

該当のソースコード

python

1a(0)=0.5 2a(1) = 2*a(0)+1 3a(2) = 2*a(1)+1 4a(2)

試したこと

a_0を定義してa_1に代入する。
求めたa_1をa_2に代入する。という方法をとってみました。
エラーの意味がよくわからないです。

補足情報(FW/ツールのバージョンなど)

pythonどころかプログラミング経験が全くありません。よろしくお願いします。

DrqYuto👍を押しています

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

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

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

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

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

tetsunosuke

2019/07/29 02:40

> 求めたい等比数列の一般項は > a_n=2*n+1 これはなんか数学的に用語が間違ってる気がしますね。そのa_nであれば等差数列だし、求めたいものは階差が等差数列になる数列で等比数列でもないです。 それはともかく「再帰」などで検索してみては。 > can't assign to function call これはなんらかのプログラムを書いてみたということでしょうから、そのコードを載せてください。
kunikuni96

2019/07/29 02:47

ご指摘ありがとうございます。一般項を訂正いたしました。 他の方の質問を参考にコードも載せてみます。
kunikuni96

2019/07/29 03:03

ご指摘いただいて自分が疑問に思っている点を再確認しました。 まずはa_1,a_2を求める方法を質問したいです。
tetsunosuke

2019/07/29 04:23

なるほど。 > a(0)=0.5 まず、これがエラーになっていることを理解してください。 a(0) という表記は関数の呼び出しになっていて、その呼出に対して0.5という値を代入しようとしていておかしいよ、と言われているのがエラーメッセージです。 さて・・・ここからどうしたものでしょうか。 たとえば、 a = [] と定義して、 a.append(0.5) とすれば a[0] で 0.5を得る、というようなことはできますが... (どのレベルで回答が欲しいですか?)
tetsunosuke

2019/07/29 04:32

ヒントですが Pythonで再帰フィボナッチのメモ化 https://qiita.com/takey/items/4b1767af0f0652ef8764 というようなのがあり、こちらでは、 fib(n) という関数を定義して、 fib(10) のように呼び出すと10番目のフィボナッチ数を求めてくれます。 同様に a(n) という関数を定義して、 a(100) を求めるようにプログラミングしたい、というような質問だと理解しています。
kunikuni96

2019/07/30 03:18

ありがとうございました。()は関数を呼び出すときに使うということが理解できました。ほかの方のアドバイスの通り辞書型を使うことで無事解決しました。
guest

回答2

0

ベストアンサー

python

1a = {'0': 0.5} 2for i in range(1, 100): 3 a[str(i)] = 2*a[str(i - 1)]+1 4a['2']

辞書を使えばいいのではないでしょうか。

投稿2019/07/29 05:03

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

LouiS0616

2019/07/29 06:23

リストでは無く辞書を選んだ理由は何でしょうか。
退会済みユーザー

退会済みユーザー

2019/07/29 07:13 編集

該当のソースコードになるべく近い見た目のほうが見やすいかと思ったので
LouiS0616

2019/07/29 07:24

なるほど。確かにリストの場合appendするか、適当な長さのものを予め用意しないといけませんね。 では、キーに文字列を使っているのはどうしてでしょうか。
退会済みユーザー

退会済みユーザー

2019/07/29 07:32

前提のところに "a_1にa_0を代入する" と書いてあったので数字ではなく文字列の方が今後も役立つのではないかと思ったから
kunikuni96

2019/07/30 03:32

ありがとうございました。辞書型とは数字を文字として使うという考え方でよろしいでしょうか。
退会済みユーザー

退会済みユーザー

2019/07/30 08:53

数字でも大丈夫です。 辞書はキーを使って値を取り出します。 キーは基本的にどんな型でも大丈夫です。 詳しく言うとハッシュ可能な型ならなんでも大丈夫です。
guest

0

google翻訳
関数呼び出しに代入できません

まあ、そのまんまですね

投稿2019/07/29 04:40

y_waiwai

総合スコア87774

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

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

kunikuni96

2019/07/30 03:31

そのようです。辞書型を使うことで解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問