0
while 1:
    pie = 50
    pieR = pie
    pieRem = pieR - buy
    print("We have ", pieRem, "pie(s) left!")
    buy = int(input("How many pies would you like?  "))
    pieCost = 5
    Pie = pieCost * buy
    if buy == 1:
        print(pieCost)
        pieS = pieR - buy
    elif buy > 1:
        print(Pie * 0.75)
    else:
        print("Please enter how many pies you would like!")

コンソールを開くと、購入したいパイの数を尋ねられ、残りのパイの数が表示されるようにしましたが、パイの値は毎回更新されます。したがって、最初に 2 つのパイが必要であると選択した場合、48 個のパイが残っていると表示され (デフォルトのパイの値は 50)、2 回目に尋ねられた後、45 に下がる代わりに 3 を入力すると、更新されます。そして47まで下がります。

これをうまく説明できれば幸いです。誰かがこれを修正する方法を知っていることを願っています。

4

3 に答える 3

1

以下の@Haidrosコードから

buy,pies,cost = 0,50,5
while 1:
    if pies<1:
        print ('Sorry no pies left' )
        break
    print("We have ", pies, "pie(s) left!")
    buy = int(input("How many pies would you like?  "))
    if pies-buy<0:buy = int(input("Only %s pies remaining How many pies would you like?"%pies))                  
    if buy>0:
        if buy==1:print(cost*buy)
        else:print(cost*buy * 0.75)
        pies-=buy       
    else:
        print("Please enter how many pies you would like!")
于 2013-07-05T03:32:53.637 に答える
0

クラスとオブジェクトを使用すると、グローバル変数が不要になり、コードを他の製品 (例: クロワッサン、ベーグル、スープ、コーヒー、サンドイッチなど) に簡単に拡張できます。

class pies:
""" Object To Sell Pies """

def __init__(self):
    """ Constructor And Initialise Attributes """       
    self.pies=50
    self.amount = 0     
    self.cost = 5

def buy(self,buy):
    """ Method To Buy Pies """       

    if (buy > self.pies):
        print "Sorry Only %d Pies in Stock" % self.pies
    elif (self.pies >= 1):
        self.pies =self.pies - buy
        print "Cost is : %.02f" % ( 0.75 * buy )
        print "We have %d and pies in stock" % (self.pies) 
    elif (self.pies == 1):
        self.pies =self.pies - buy
        print "Cost is : %.02f" % ( self.cost * buy )
        print "We have %d pies in stock now" % (self.pies) 

    else:
        print "Sorry Pies Out of Stock !"  
        self.buy = 0
        self.pies = 0

上記のコードを pieobject.py として保存し、次のように呼び出します。

#!/usr/bin/env python

import os
from pieobject import pies

p = pies()

while True:

    try:
        amount=int(raw_input('Enter number of pies to buy:'))
    except ValueError:
        print "Not a number"       
        break

    os.system('clear')  
    p.buy(amount)
于 2013-07-05T10:43:37.897 に答える