1

編集:条件を変更しました..ありがとう

私はtry/exceptionを学ぼうとしています。本来あるべき出力が得られません。通常、1杯または0杯になります。理想的には、9 または 10 にする必要があります。

指示:

NoCoffee クラスを作成し、次のことを行う make_coffee という関数を作成します。 random モジュールを使用して、95% の確率でメッセージを出力して通常どおり戻ることにより、コーヒーのポットを作成します。5% の確率で、NoCoffee エラーを発生させます。

次に、try ブロックと for ループを使用して make_coffee を呼び出して 10 個のポットを作ろうとする関数 attempts_make_ten_pots を作成します。関数 attempts_make_ten_pots は、try ブロックを使用して NoCoffee 例外を処理する必要があり、実際に作成されたポットの数を整数で返す必要があります。

import random

# First, a custom exception
class NoCoffee(Exception):
    def __init__(self):
        super(NoCoffee, self).__init__()
        self.msg = "There is no coffee!"

def make_coffee():
    try:
        if random.random() <= .95:
            print "A pot of coffee has been made"

    except NoCoffee as e:
        print e.msg

def attempt_make_ten_pots():
    cupsMade = 0

    try:
        for x in range(10):
            make_coffee()
            cupsMade += 1

    except:
        return cupsMade


print attempt_make_ten_pots()
4

1 に答える 1

4
  1. 95% を許可する場合、条件は

    if random.random() <= .95:
    
  2. ここで、プログラムにエラーをスローさせてコーヒーの数を返すようにするには、ランダム値が .95 より大きい場合に例外を発生させる必要があり、それ自体ではattempt_make_ten_potsなく関数内で例外を発生させる必要がありmake_coffeeます。

    import random
    
    # First, a custom exception
    class NoCoffee(Exception):
        def __init__(self):
        super(NoCoffee, self).__init__()
        self.msg = "There is no coffee!"
    
    def make_coffee():
        if random.random() <= .95:
            print "A pot of coffee has been made"
        else:
            raise NoCoffee
    
    def attempt_make_ten_pots():
        cupsMade = 0
        try:
            for x in range(10):
                make_coffee()
                cupsMade += 1
        except NoCoffee as e:
            print e.msg
        return cupsMade
    
    print attempt_make_ten_pots()
    
于 2013-11-15T02:03:06.697 に答える