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

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

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

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

Q&A

解決済

3回答

922閲覧

(変数名) == ""について。

Yks.waeq

総合スコア23

Python

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

0グッド

1クリップ

投稿2020/04/04 04:23

編集2020/04/04 04:26

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

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

python初心者です。今、本で独学してます。 3行目のuser == ""は必要ないですよね?なくてもプログラムは動きます。 なのに本では下のソースコードのようにかかれています。 user == ""を書いたときと書かなかった時で違うことはあるんですか?

該当のソースコード

while True : user=input("坪数は?") if user == "" or user == "q":break tubo=int(user) m2=tubo * 3.31 s="{0}坪は{1}平方メートルです".format(tubo,m2) print(s)

試したこと

使ってる本で書かれてないか探してみました。

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

python3.8.2

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

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

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

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

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

Zuishin

2020/04/04 04:31

コードの意味はその本には書かれていませんか?
Yks.waeq

2020/04/04 04:48

while True や if などは書かれていますが、質問したところは書かれていません。
Zuishin

2020/04/04 05:02

それはすみませんでした。if と == と break が書いてあればわかるのではないかと思っただけで、その答えは想定外でした。
Yks.waeq

2020/04/04 05:26

""の意味がわかってなかっただけでした。質問ありがとうございました。
guest

回答3

0

user == ""を書いたときと書かなかった時で違うことはあるんですか?

はい、何も入力しなかったときの動作が違います。

投稿2020/04/04 04:51

maisumakun

総合スコア146018

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

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

Yks.waeq

2020/04/04 05:19

回答ありがとうございます。
guest

0

ベストアンサー

流れを考えてみてください。
流れを考えるには、「一行ごとに何をしているかコメントを書いていく」とか、あるいは名称は忘れましたが、変数の値の変化やif文等の条件を満たす・満たさない等を書くシートがあった気がします。
(趣味でやっているのでわかりませんが、たまたまそういう記事を見たことがあるので)

オリジナルが

Python

1while True : 2 user=input("坪数は?") 3 if user == "" or user == "q":break 4 tubo=int(user) 5 m2=tubo * 3.31 6 s="{0}坪は{1}平方メートルです".format(tubo,m2) 7 print(s)

だとしますね。

そしたら

Python

1# 条件式( True ) の間(= つまり無限ループ? ) 2while True : 3 # "坪数は?"みたいに聞いて、userっていう変数に入れる 4 user=input("坪数は?") 5 # 空か"q" ならループから抜ける 6 if user == "" or user == "q":break 7 # userに入っているデータを整数(int)に変換して変数tubo に入れる 8 tubo=int(user) 9 # 計算式 平方メートル = 坪数 * 3.31 で平方メートルを算出 10 m2=tubo * 3.31 11 # 出力するための、指定の書式に組み替える 12 s="{0}坪は{1}平方メートルです".format(tubo,m2) 13 # 出力 14 print(s) 15# ここに来るとwhileの先端に戻るか、終了する( 条件式を満たすかどうかで変わるが... )

みたいに一行ごとに書いていきます。

別にコメントにせずにほかのテキストファイルとか(現実世界の)ノートとかに書いてもいいですが。

とにかく流れを追うのです。

すると、if user == "" or user == "q":break は、「userが空か"q"なら終了」ですよね。

つまり、「userが"q"である場合」と「userが空の場合」のどちらかが満たされたときに終了したいという意図があると思います。

user=input("坪数は?")の部分は常に何かしらの文字列データが入っているわけではなく、
単にエンターキーを押したとかのように、空の場合もあります。
なのでそれ対策(何も入力せずにEnterを押した場合)に書いてあるだけです。


[追記1]

念のため、もうちょっと書いておきます。

流れを追いにくいときは、文字に起こすのも手です。

上記のコメントのやつを利用すると、

  1. 条件式( True ) を満たす間、下記を無限ループ

1.1. "坪数は?"等のようにユーザ入力を促し、変数 user に入れる
1.2. 変数 user の値が { 空 } もしくは { "q" } ならブロックから抜ける(break)
1.3. 変数 user に入っている値を 整数(int)に変換し 変数 tubo に入れる
1.4. 計算式 平方メートル = 坪数 * 3.31 で平方メートルを算出
1.5. 出力するための指定書式に変換して文字列にする
1.6. (1.5.)で定義した文字列を表示
2. ここに来るとwhileの先端に戻る(ただし条件式を満たす場合のみ)か、終了する

となりますよね。

これを具体的な値を入れてみて考えるのです。

例えば ユーザが "abc" を入力した場合、"133" を入力した場合、何も入れずにEnterだけ押した場合...という風にいろんなデータを入力したと想定して流れを追ってみるのです。

これである程度のロジックは読めるはずです。

投稿2020/04/04 05:00

編集2020/04/04 07:40
BeatStar

総合スコア4962

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

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

Yks.waeq

2020/04/04 05:17

詳しい回答ありがとうございます。助かりました。
guest

0

なくてもプログラムは動きます。

動くと言えば動くけど、正しく終わらせることができない。

投稿2020/04/04 04:51

KojiDoi

総合スコア13692

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

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

Yks.waeq

2020/04/04 05:19

回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問