入力待ち処理を繰り返し特定文字の入力で終了させるプログラム
概要
次のようなプログラムを作ってみる
プログラムを起動すると「税抜き価格を入力してください」と表示されて
数字の入力待ちになり、税抜き価格を入力すると税込み価格を出力する
その後また入力待ちになり、同様に税抜き価格から税込み価格を出力する
-1を入力するとプログラムを終了する
例
while True:
value = input('税抜き価格を入力してください\n')
if int(value) == -1:
break
else:
value = int(value) * 1.08
value = int(value)
print(value)
以下の処理を繰り返し処理せよ
「税抜き価格を入力してください(改行)」と表示して入力された値を変数valueに入れよ
もしvalueを整数にした値が-1であれば以下の処理をせよ
whileの繰り返し処理から抜けよ
そうでなければ以下の処理を実行せよ
valueを整数にして1.08を乗算せよ
valueを整数にせよ
valueを表示せよ
説明
数字を入力するとそれに1.08がかけられて出力される
それがずっと繰り返しになる
-1を入力すると終わる
間違えやすい問題
概要
上のコードで、間違って「a」のような文字列を入れてしまうと
エラーを起こして終了する
そのままでもいいのだが、文字列を入力したときに
「数字を入力してください」と表示されるようにしてみる
whileの中に「valueがもし文字列なら、ループの開始地点に戻して
「数字を入力してください」と表示せよ」という命令を入れればよさそうな気がするが
if type(value) == str:
break
入力された文字は数字だろうと文字列だろうと最初は文字列なので
このやり方では判別できない
(入力直後は数字を入れても文字列を入れても同様に文字列と認識されているため)
エラーが出た時点でそれを処理するコードを書くしかない
例
while True:
value = input('税抜き価格を入力してください\n')
try:
value = int(value)
if value == -1:
break
else:
value = int(value) * 1.08
value = int(value)
print(value)
except ValueError:
print('数字を入力してください\n')
continue
以下の処理を繰り返し処理せよ
「税抜き価格を入力してください(改行)」と表示して入力待ちにし、入力された文字列を変数valueに入れよ
以下の処理をやってValueErrorというエラーが出たらexcept以下に移動せよ
valueを整数にせよ
valueを整数にしてその値が-1であれば以下の処理をせよ
whileループから抜けよ
そうでなければ以下の処理をせよ
valueを整数に直してさらに1.08を乗算せよ
valueの小数点以下を切り捨てて整数にせよ
valueを出力せよ
tryでValueErrorというエラーが起きたら以下の処理をせよ
「数字を入力してください」と表示せよ
whileループの開始地点に戻れ
説明
間違えやすい問題