流れを考えてみてください。
流れを考えるには、「一行ごとに何をしているかコメントを書いていく」とか、あるいは名称は忘れましたが、変数の値の変化や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]
念のため、もうちょっと書いておきます。
流れを追いにくいときは、文字に起こすのも手です。
上記のコメントのやつを利用すると、
- 条件式( 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だけ押した場合...という風にいろんなデータを入力したと想定して流れを追ってみるのです。
これである程度のロジックは読めるはずです。