0

アイスクリームを作成する小さなプログラムを作成しています。それは本当に簡単ですが、何がプロセスを台無しにしているかわかりません。関数とそれらを呼び出す経験が不足していると思います。

基本的にはランダムにアイスクリームを作るのですが、関数内で関数を呼び出したいのですが、表示されません。create_icecream の関数でアイスクリームのフレーバーとスクープを作成した後、スプーン 1 杯のランダムな量を作成する必要があります。

基本的に、「はい」または「いいえ」を生成し、それを出力します。

ランダムに「はい」を選択すると、アイスクリームとその変数の作成に進みます。

ただし、リストする順序がわかりません。したがって、将来、コードを変更する場合、関数appear_icecreamで最初に呼び出すものを決定したいと思います...つまり、表示するときに最初に関数create_icecream()またはconsumation()を決定します...私は消費を信じています() は create_icecream() の後に定義する必要がありますが、まだ学習中です。

これまでに書いたものは次のとおりです。

import random
icecream_flavor = ["Chocolate","Vanilla","Strawberry"]
icecream_scoops = ["One","Two","Three","Four"]
icecream_made = ["yes","no"] 

def create_icecream():
    icecream_flavor_c = random.choice(icecream_flavor)
    icecream_scoops_c = random.choice(icecream_scoops)

    # Ice Cream Details: Printed
    print("Scoops:  ",icecream_scoops_c)
    print("Flavor:  ",icecream_flavor_c)

def consumption():
    if icecream_scoops == "One":
        icecream_spoonfuls = random.randint(0, 25)
        print("Spoonfuls:   ",icecream_spoonfuls)
    elif icecream_scoops == "Two":
        icecream_spoonfuls = random.randint(26, 50)
        print("Spoonfuls:   ",icecream_spoonfuls)
    elif icecream_scoops == "Three":
        icecream_spoonfuls = random.randint(51, 75)
        print("Spoonfuls:   ",icecream_spoonfuls)
    elif icecream_scoops == "Four":
        icecream_spoonfuls = random.randint(76, 100)
        print("Spoonfuls:   ",icecream_spoonfuls)
    else:
        return

def appear_icecream():
    icecream_appear = random.choice(icecream_made)
    # print(icecream_appear)
    if str(icecream_appear) == "yes":
        print("Yes")
        create_icecream()
        consumption()
    elif str(icecream_appear) == "no":
        print("No Ice Cream")
    else:
        print("BUG!")

print("Ice Cream No.1")
appear_icecream()
print("Ice Cream No.2")
appear_icecream()

実行の例:

Ice Cream No. 1    
Yes
Scoops:    One
Flavor:    Strawberry
Ice Cream No. 2
No Ice Cream

明らかに、spoonfuls 変数の数は表示されません。

4

3 に答える 3

1

まったく変更されていない変数 icecream_scoops をチェックしているため、spoonfools の数は表示されません。icecream_scoops は常に ["One","Two","Three","Four"] であるため、コードは機能しません:D

こちらをご覧ください:

def create_icecream():
icecream_flavor_c = random.choice(icecream_flavor)
icecream_scoops_c = random.choice(icecream_scoops)

icecream_scoops_c は、ランダムな選択を格納する変数であるため、これを確認する必要があります。問題は、これはローカル変数であるため、関数内でしかアクセスできないことです。したがって、それを使用する方法は、consumption() 関数に引数を使用させることです。そして、 create_icecream() 内から呼び出すことができます

このような:

def create_icecream():
icecream_flavor_c = random.choice(icecream_flavor)
icecream_scoops_c = random.choice(icecream_scoops)

# Ice Cream Details: Printed
print("Scoops:  ",icecream_scoops_c)
print("Flavor:  ",icecream_flavor_c)
consumption(icecream_flavor_c)



def consumption(scoops):
    if scoops == "One":
        icecream_spoonfuls = random.randint(0, 25)
        print("Spoonfuls:   ",icecream_spoonfuls)
    elif scoops == "Two":
        icecream_spoonfuls = random.randint(26, 50)
        print("Spoonfuls:   ",icecream_spoonfuls)
    elif scoops == "Three":
        icecream_spoonfuls = random.randint(51, 75)
        print("Spoonfuls:   ",icecream_spoonfuls)
    elif scoops == "Four":
        icecream_spoonfuls = random.randint(76, 100)
        print("Spoonfuls:   ",icecream_spoonfuls)
    else:
        return

そうすれば、var scoops として icecream_scoops_c から consumtion() に値を渡し、conmsumtion() がそれをチェックします。また、appear_icecream() の結果が no の場合は consumtion() を呼び出さないため、そこで時間を稼いでいます。

私が明確であり、それが役立つことを願っています!

以下の完全なコード:

import random
icecream_flavor = ["Chocolate","Vanilla","Strawberry"]
icecream_scoops = ["One","Two","Three","Four"]
icecream_made = ["yes","no"]


def create_icecream():
    icecream_flavor_c = random.choice(icecream_flavor)
    icecream_scoops_c = random.choice(icecream_scoops)

    # Ice Cream Details: Printed
    print("Scoops:  ",icecream_scoops_c)
    print("Flavor:  ",icecream_flavor_c)
    consumption(icecream_scoops_c)  # call the function with the correct variable

def consumption(scoops):  # added scoops arg
    if scoops == "One":
        icecream_spoonfuls = random.randint(0, 25)
        print("Spoonfuls:   ",icecream_spoonfuls)
    elif scoops == "Two":
        icecream_spoonfuls = random.randint(26, 50)
        print("Spoonfuls:   ",icecream_spoonfuls)
    elif scoops == "Three":
        icecream_spoonfuls = random.randint(51, 75)
        print("Spoonfuls:   ",icecream_spoonfuls)
    elif scoops == "Four":
        icecream_spoonfuls = random.randint(76, 100)
        print("Spoonfuls:   ",icecream_spoonfuls)
    else:
        return


def appear_icecream():
    icecream_appear = random.choice(icecream_made)
    # print(icecream_appear)
    if str(icecream_appear) == "yes":
        print("Yes")
        create_icecream()
    elif str(icecream_appear) == "no":
        print("No Ice Cream")
    else:
        print("BUG!")

print("Ice Cream No.1")
appear_icecream()
print("Ice Cream No.2")
appear_icecream()
于 2013-04-22T18:55:40.287 に答える