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

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

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

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

Q&A

3回答

1056閲覧

変数として使用したいのに、文字列として扱われてしまう。

zuzu1984

総合スコア31

Python

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

0グッド

0クリップ

投稿2019/03/17 04:27

変数としてい使用したいのに、文字列として扱われてしまいます。

[ev(数字)]という変数が1~10まであります。
毎回変更し、変数として呼び出したいのです。
現在、文字列として扱われてしまいます。

【やりたいこと】
・変数ev(数字)のev1~10までを呼び出し、変数にどんな文字が入っているか見たい。

python

1 #I'm understand, I'm fool. 2 ev1 = 'Im unders' 3 ev2 = 'm underst' 4 ev3 = 'rstand, I' 5 ev4 = 'd, Im fo' 6 ev5 = 'm fool.' 7 ev6 = '' 8 ev7 = '' 9 ev8 = '' 10 ev9 = '' 11 ev10 = '' 12 13 list = ev1 14 print(list) 15 16 num = 1 17 for i in range(10): 18 if 'ev'+str(num) == '': 19 print('ev' +str(num)+ ' = Empty') 20 continue 21 elif not 'ev'+str(num): 22 continue 23 else: 24 ## ber = 'ev'+str(num) 25 ## ber = 'ev'.join(num) 26 ## ber = 'ev' + num 27 ## print(ber) 28 l = 'ev'+str(num) 29 print(l) 30 print('ev' +str(num)+ ' = ' +str(l)) 31 num = num + 1 32

[結果】
数字を変えて、変数に格納している内容を確認したいのですが、上記のコードだと文字列で認識されてしまいます。
[ev1 = ev1]の箇所は[ev1 = Im unders]と表示させたいです。

python

1Im unders 2ev1 3ev1 = ev1 4ev2 5ev2 = ev2 6ev3 7ev3 = ev3 8ev4 9ev4 = ev4 10ev5 11ev5 = ev5 12ev6 13ev6 = ev6 14ev7 15ev7 = ev7 16ev8 17ev8 = ev8 18ev9 19ev9 = ev9 20ev10 21ev10 = ev10 22>>>

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

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

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

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

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

guest

回答3

0

ev1, ... ev10 でなく ev を list にして ev[1], ... ev[10] で扱うようにしては如何でしょう?

a.py

python3

1ev = ['' for i in range(11)] 2ev[1] = 'Im unders' 3ev[2] = 'm underst' 4ev[3] = 'rstand, I' 5ev[4] = 'd, Im fo' 6ev[5] = 'm fool.' 7 8 9data = ev 10print(data) 11 12for i in range(1, 11): 13 if ev[i] == '' or ev[i] == None: 14 print('ev' + str(i) + ' = Empty') 15 else: 16 print('ev' + str(i) + ' = ' + ev[i])

実行例
イメージ説明

追記:
eval() をつかって対処することは可能ですが、おすすめしません。

  • Pythonでevalを使用するのは悪いことですか?

https://codeday.me/jp/qa/20181208/64693.html

...
evalを使うのは悪い習慣です。いくつかの理由を挙げると、
ほとんどの場合、より良い方法があります
非常に危険で安全でない
デバッグが困難になる
遅い
...

投稿2019/03/17 05:03

編集2019/03/17 06:48
katoy

総合スコア22324

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

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

0

文字列として記述してるので、文字列として扱われるのは当然ですね

if 'ev'+str(num) == '':

'ev' は文字列でしかないです。
同様に、
'ev'+str(num) も文字列でしかありませんね

投稿2019/03/17 04:32

編集2019/03/17 04:34
y_waiwai

総合スコア87719

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

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

0

if 'ev'+str(num) == '':

このままでは、 'ev'+str(num) は文字列なので、変数にする必要があります。
例えば、

python

1 if eval('ev1'+str(num)) == '':

ではどうでしょうか?

投稿2019/03/17 04:44

pepperleaf

総合スコア6383

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問