入力待ち処理を繰り返し特定文字の入力で終了させるプログラム


概要


次のようなプログラムを作ってみる

プログラムを起動すると「税抜き価格を入力してください」と表示されて
数字の入力待ちになり、税抜き価格を入力すると税込み価格を出力する
その後また入力待ちになり、同様に税抜き価格から税込み価格を出力する
-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ループの開始地点に戻れ

出力


説明


間違えやすい問題