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

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

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

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

Python 3.x

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

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

Q&A

解決済

3回答

1031閲覧

loop文を使ってプログラムをシンプルに書き直すには

退会済みユーザー

退会済みユーザー

総合スコア0

for

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

Python 3.x

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

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

0グッド

1クリップ

投稿2018/10/22 20:11

前提・実現したいこと

loop文を用いてプログラムの分をもっとシンプルに書き直したい

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

forを使ってできないかと試行錯誤していますが、思う通りの実行結果にならなかったり、エラーが出たりとなかなか上手くできません。

can't assign to function call

該当のソースコード

python

1for countnumber in range(7): 2 count(countnumber) = a.count(countnumber) 3 countnumber = countnumber + 1

期待する実行結果は以下の通りです。
count1 = a.count(1)
count2 = a.count(2)
count3 = a.count(3)
count4 = a.count(4)
count5 = a.count(5)
count6 = a.count(6)

このように、代入する式に対してloop文は使えるでしょうか。
分かる方に解説をお願いしたいです。

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

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

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

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

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

guest

回答3

0

配列 count は宣言したものを使うのが現実的として、
参考になるコードをググると、
Python基礎講座(9 反復)
の for_explain2.py が参考になります。

Python

1for countnumber in range(7): 23for countnumber in range(1,7):

Python

1 countnumber = countnumber + 1

はデバッグ行としても使える、print("{0}".format(i))
から for 文の中でインクリメント(1を足す)してくれるから不要であることがわかります。

追記

LOOP、つまり、繰り返しを理解するために、 “ペン”を使って正多角形を描く を見ては?小学生向けだからと言って侮ってはなりません。

投稿2018/10/22 21:48

編集2018/10/23 01:15
Orlofsky

総合スコア16415

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

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

退会済みユーザー

退会済みユーザー

2018/10/24 13:17

とても良い参考資料でした。ありがとうございました。
guest

0

代入する式に対してloop文は使えるでしょうか。

できないことも無いですが、バグの温床になるので使わない方が良いです。
普通はリストや辞書で管理します。

Python

1>>> lst = [] 2>>> for i in range(1, 8): 3... lst.append(i) 4... 5>>> lst 6[1, 2, 3, 4, 5, 6, 7] 7>>> 8>>> lst[0] 91

投稿2018/10/23 01:41

LouiS0616

総合スコア35660

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

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

退会済みユーザー

退会済みユーザー

2018/10/24 13:17

参考になりました。ありがとうございました。
guest

0

ベストアンサー

count1 = ...
coint2 = ...

count(idx) で idx を 1, 2 に変化させて変数自体を表すことはできません。
count を配列にして count[idx] = ... のようにするとよいです。


c.py

python3

1count = [None] * 7 2for idx in range(len(count)): 3 count[idx] = f"a.count({idx})" 4 5print(count) 6 7count = [f"a.count({idx})" for idx in range(7)] 8print(count)

実行例
イメージ説明

追記
上のコードでは count[0], count[6] になりますが、すこしの変更で count[1] ,,, count[7] にできます。

投稿2018/10/22 21:45

編集2018/10/22 21:57
katoy

総合スコア22324

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

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

退会済みユーザー

退会済みユーザー

2018/10/24 13:19

そういうやり方もあるんですね。また一つ学びました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問