1

私はPythonが初めてで、いくつかの基本的な問題で立ち往生しています。

  1. ほとんどの計算をモジュールに入れることができないようです。その場合、結果は転送できず、常に 0.0 として表示されます。

  2. 計算をモジュールに入れることができたら、そのモジュールをループ内に入れ、ユーザーにアクションを繰り返すかどうか尋ねます。

  3. これも私の主な問題です :: 各項目 (項目番号、価格など) の出力 (displayResults) を「保存」し、ループがキャンセルされたらすべてを出力したいと考えています。

ありがとう!私はこれを理解しようとするのにかなり苦労しています。

これが私のコードです:

#Mateo Marquez
#Oct. 8th, 2012
#P.O.S information system assigment
#

#Define Global Variables
TAX = 0.6
YELLOW_TAG = 0.10
BLUE_TAG = 0.20
RED_TAG = 0.25
GREEN_TAG = 0

#Main Module
def main():

    tax_fee = 0.0
    total_price = 0.0
    introUser()

    # I want this to be the mainCalc() function and return results.

    productNumber=raw_input("Please enter the Product Number: ")
    cost=float(raw_input("Please enter the cost of the selected product: "))
        print " "
        print "As you might have noticed, our discounts are color coded"
        print "Yellow is 10%, Blue is 20% & Red is 25%"
        print " "
    tagDiscount=raw_input("Please enter the color tag: (yellow, blue, red or none)")
    if tagDiscount == 'yellow':
        print " "
        print "You get a 10% discount"
        total_price = (YELLOW_TAG*cost)
    if tagDiscount == 'blue':
        print " "
        print "You get a 20% discount"
        total_price = (BLUE_TAG*cost)
    if tagDiscount == 'red':
        print " "
        print "You get a 25% discount"
        total_price = (RED_TAG*cost)
    if tagDiscount == 'none':
        print " "
        print "No discount for you!"
        total_price = 0

    print " "
    print "~Remember~ this weekend is Tax Free in most of the country"
    print "Green Tags designate if the product is tax free"
    tagDiscount=raw_input("Does your product has a Green Tag? (yes or no)")
    if tagDiscount == 'yes':
        print " "
        print "Good! your product is tax free"
        tax_fee = 0
    if tagDiscount == 'no':
        print " "
        print "I'm sorry, product", productNumber, "requires regular tax"
        tax_fee = (TAX*total_price)

#I want this to be the end of the mainCalc() function       

displayResults(total_price, tax_fee, cost, productNumber)

#Introduction function
def introUser():
    print "Welcome to Wannabee's"
    print "I'll gladly help you with your price question"
    print "Let's start"
    print " " 


#Display results function
def displayResults(total_price, tax_fee, cost, productNumber):
    print " "
    print "Your Product Number: ", productNumber
    print "Listed price of your product: $", cost
    print "Your discount: $", total_price
    print "Your Tax amount: $", tax_fee
    print "Your grand total: $", (cost - total_price - tax_fee)
    print " "
    print "Your savings: ", ((cost-total_price)/cost*100),"%!"

main()
4

2 に答える 2

0

関連するルーチンで使用される値を保存するには、変数とそれらを使用するルーチンをクラスに配置します。次のコードは、「POS」クラスと、その変数を共有する2つのメソッドルーチンを定義します。自己。" メソッドの表記は、クラスが。でインスタンス化されたときに作成されるインスタンス「p」に保存されるクラス変数を示しますp = POS()

この例は、変数がどのように格納されるかを示しています。必要に応じて入力と出力ステートメントを調整する必要があります(ここではPython 3を使用しています)。入力されたとおりにアイテムを保存して最後に印刷する場合は、で空のリストを作成し、__init__のリストにタプルを追加して、mainCalc()の各リストアイテムを印刷しますdisplayResults()

class POS:
    def __init__(self):
        self.taxrate = 0.06
        self.disc = {"": 0.0, "yellow": 0.10, "blue": 0.20, "red": 0.25}
        self.total = 0
        self.savings = 0
        self.tax = 0

    def mainCalc(self, item, qty, cost, tag, taxable):
        print(qty, "* Item", item, "@ ${:.2f}".format(cost),
                                   "= ${:.2f}".format(qty*cost))
        discount = cost * self.disc[tag]
        if (tag):
            print("  You get a", int(100*self.disc[tag]),
                  "% discount ${:.2f}".format(discount), "for", tag, "tag")
        self.total += qty * (cost - discount)
        self.savings += discount
        if (taxable == "yes"):
            tax = qty * cost * self.taxrate
            self.tax += tax
            print("  tax ${:.2f}".format(tax))
        else:
            print("  tax free")

    def displayResults(self):
        print("----------------")
        print("Your total:     ${:.2f}".format(self.total))
        print("Your savings:   ${:.2f}".format(self.savings))
        print("Your total tax: ${:.2f}".format(self.tax))
        print("Grand total:    ${:.2f}".format(self.total + self.tax))
        return

p = POS()

#        Item  Qty Price  Tag      Taxable
items = [(1492, 1, 1.95, "yellow", "yes"),
         (1524, 2, 4.50, "blue",   "no"),
         (2843, 1, 6.95, "blue",   "yes"),
         (1824, 3, 2.29, "",       "yes")]

for i in items:
    p.mainCalc(*i)

p.displayResults()

例を実行すると、次のようになります。

1 * Item 1492 @ $1.95 = $1.95
  You get a 10 % discount $0.20 for yellow tag
  tax $0.12
2 * Item 1524 @ $4.50 = $9.00
  You get a 20 % discount $0.90 for blue tag
  tax free
1 * Item 2843 @ $6.95 = $6.95
  You get a 20 % discount $1.39 for blue tag
  tax $0.42
3 * Item 1824 @ $2.29 = $6.87
  tax $0.41
----------------
Your total:     $21.39
Your savings:   $2.49
Your total tax: $0.95
Grand total:    $22.33
于 2012-10-08T14:54:38.500 に答える
0

次の制約を考慮する必要があります。

  • 関数は、ステートメント(への呼び出し)によって定義されたでのみ呼び出すことができます。defdisplayResults
  • 関数は、別の関数定義の本体でローカルに定義されている変数にアクセスできません。

コードを改善するには、全体的な観点からプログラムがどのように流れるかを考えるか、Daveの回答で提案されているクラスを使用します。

于 2012-10-08T17:01:49.313 に答える