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

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

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

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

Python

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

Q&A

3回答

1129閲覧

変数に数字を足して先に定義した複数の変数から選びたい

KohnoseLami

総合スコア17

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2020/09/27 07:51

前提・実現したいこと

最初にproduct1 product2 product3 product4という風に四つ変数を定義していたとして、その変数からリスト内の要素数+1した変数をprintさせたいです。
中々説明が難しくてうまく説明できていないかもです...すみません。

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

文字列同士での結合はできるのですが変数としてそれを認識させる方法がわかりません。

該当のソースコード

Python3

1product_list = list(zip(item_list,fee_list,url_list)) 2product1 = '\n'.join(product_list[0]) 3product2 = '\n'.join(product_list[1]) 4product3 = '\n'.join(product_list[2]) 5product4 = '\n'.join(product_list[3]) 6print("product" + str(len(sponsers) + 1))

試したこと

product + str(len(sponsers) + 1)などを試しましたがこちらですと変数productが見つからず。。。
文字列で定義した後にそれを変数として扱うためにはexec(product)などを見かけたので試しましたがおそらく違ったらしくうまくいきませんでした

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

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

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

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

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

toast-uz

2020/09/27 08:16

・item_list,fee_list,url_listを具体的に例示いただけますか? ・product1 product2 product3 product4は何に使う変数なのでしょうか?これらを使わずにitem_list,fee_list,url_listから目的となる変数を作る方が容易であると思います。 ・「リスト内の要素数+1」のリストとは何で、要素とは何でしょうか? ・コードに出てくるsponsersとは何でしょうか?
KohnoseLami

2020/09/27 08:29

こちらはショッピングサイトのスクレイピングプログラムでして、item_listには商品名が順番にリスト形式で掲載されています。 fee_listには値段が、url_listにはその商品のURLが それらを1つのリストにまとめてproduct_list[0]で一番最初の商品の名前、金額、URLを取り出せるようになっています。 さらにそのリストを改行コードを入れて一つの商品を見やすくしているのがproduct1(商品一個目)です。 こちらの変数をSNS上にポストすることできれいに見栄えが良くなるようにしています。 さらにそのままでは検索結果にスポンサー商品が一番上に来てしまうことがありそれらをはぶくためにスポンサーマークを検知してlenでスポンサーの個数を特定してその個数+1個目からがスポンサーを含まない商品情報でそれをprintしたい感じです。
toast-uz

2020/09/27 08:34

コメントありがとうございます。「(1)何か計算して活用するための変数」と、「(2)表示のための文字列変数」は区別するべきです。今回、(2)をもとに計算して活用しようとしているため、分かりにくくなってしまっています。
guest

回答3

0

どうも最初から無理なことを実行させようとしてるように見えます。
変数名に文字列を使うのではなく、リストを作って、そのインデックスの数値で選択すればどうでしょうか

投稿2020/09/27 08:05

y_waiwai

総合スコア88042

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

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

0

「productをフォーマットして表示したいが、冒頭のsponsersの数は表示したくない」という質問意図だとわかりました。やりとりで述べましたように、表示形式に整えるのは最後にして、途中は扱いやすいデータ形式で計算しましょう。下のコードは一例ですが、まずスポンサーのあるProductを除いたリストを作成し、しかるのちに、表示を作るとよいです。

Python

1sponsers = ['ふるさとりんご農場', '美味みかん販売'] 2item_list = ['りんご', 'みかん', 'ばなな', 'なし'] 3fee_list = ['100', '50', '150', '200'] 4url_list = ['apple.com', 'orange.co.jp', 'banana.ad.jp', 'pear.uk'] 5product_list = list(zip(item_list,fee_list,url_list)) 6 7# スポンサーProductを除くリストを作る 8product_list2 = product_list[len(sponsers):] 9 10# 表示 11for product in product_list2: 12 print('\n'.join(product))

投稿2020/09/27 09:16

toast-uz

総合スコア3266

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

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

0

これではだめなのでしょうか?
たぶん、書いてあるコードと同じ出力がでますよ。

python

1product_list = list(zip(item_list,fee_list,url_list)) 2print('\n'.join(product_list[len(sponsers)])

また、他の方が書かれているように、「連番の付いた変数を作りたい」と思った場合には、リストを利用するべきです。

python

1product_list = list(zip(item_list,fee_list,url_list)) 2product_text[0] = '\n'.join(product_list[0]) 3product_text[1] = '\n'.join(product_list[1]) 4product_text[2] = '\n'.join(product_list[2]) 5product_text[3] = '\n'.join(product_list[3]) 6print("product" + str(len(sponsers))

同じようなも記述の繰り返しになっている部分はfor分に置き換えたり、リスト内包表記にしたりできます。

python

1product_text = ['\n'.join(x) for x in product_list]

投稿2020/09/27 08:33

TakaiY

総合スコア13790

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問