मैं कुछ होमवर्क के लिए अपने कार्यक्रम के साथ समस्या कर रहा हूं जिस पर मैं काम कर रहा हूं। मेरे पास मेरे प्रोग्राम में कई लूप हैं और ऐसा लगता है कि पहले वाले के बाद वाले पहले वाले को उस डेटा को फिर से प्रिंट करने का कारण बन रहे हैं जो मेरे पास पहले से ही उपयोगकर्ता इनपुट है।

repeat = 'y'
p = 'y'
b = 'y'
s = 'y'
while repeat != 'n':
    while p == 'y':
            stocksPurchased = float(input("Number of stocks purchased: "))
            if stocksPurchased < 0:
                print("Negative Values are not allowed. Please re-enter.")
            else:
                    p = 'n'
    while b == 'y':                 
            pricePerStockBought = float(input("Amount per stock purchased in $: "))
            if pricePerStockBought < 0:
                print("Negative Values are not allowed. Please re-enter.")
            else:
                    b = 'n'
    while c == 'y':
            commissionWhole = float(input("Commission Rate as a percent %: "))
            if commissionWhole < 0:
                    print("Negative Values are not allowed. Please re-enter.")
            else:
                    c = 'n'

    while s == 'y':
            pricePerStockSold = float(input("Amount per stock sold in $: "))
            if pricePerStockSold < 0:
                    print("Negative Values are not allowed. Please re-enter.")
            else:
                    s = 'n'
    commissionRate = commissionWhole/100
    grossPurchasePrice = stocksPurchased*pricePerStockBought
    purchaseCommission = grossPurchasePrice*commissionRate
    totalPurchasePrice = grossPurchasePrice+purchaseCommission
    grossSalesPrice = stocksPurchased*pricePerStockSold
    saleCommission = grossSalesPrice*commissionRate
    netSalePrice = grossSalesPrice-saleCommission
    totalCommissionPaid = purchaseCommission+saleCommission
    profit = netSalePrice-totalPurchasePrice
    profitPercentage = (profit/grossPurchasePrice)*100

    print("Commission Fee paid after buying:  $", format(purchaseCommission,  ',.2f'))
    print("Amount stock sold for:             $", format(grossSalesPrice,     ',.2f'))
    print("Commission Fee paid after selling: $", format(saleCommission,      ',.2f'))
    print("Total Commission Paid:             $", format(totalCommissionPaid, ',.2f'))
    print("Total Profit made:                 $", format(profit,              ',.2f'))
    print("Profit Percentage:                 %", format(profitPercentage,    ',.1f'))

    if profitPercentage >= 8:
            print("Congrats! You beat the index fund!")
    elif 0 <= profitPercentage < 8:
            print("Well, you still made money")
    elif profitPercentage == 0:
            print("Nothing gained, nothing lost")
    else:
            print("Perhaps the stock market isn't for you")

                if totalCommissionPaid > profit:
                    print("Seems you should either pick different stocks, or find a cheaper broker")

    repeat = input("Would you like to go again y/n?: ")

अगर मैं यहां y दर्ज करता हूं तो प्रोग्राम दोहराता है लेकिन संख्याओं के लिए फिर से संकेत देने के बजाय यह पिछले रन के डेटा को फिर से प्रिंट करता है।

उदाहरण के लिए यदि मैं संख्याओं में दर्ज करता हूं: 1000, 10, 5, 15 क्रमशः यह पहले से समान संख्याओं को पुनर्मुद्रण करेगा।

Example of the issue I am having

0
NavyCat 2 अप्रैल 2018, 06:40

6 जवाब

सबसे बढ़िया उत्तर

p, b, c और s के मानों को 'y' पर सेट करें।

2
Arjun Kay 2 अप्रैल 2018, 03:50

समस्या आपके चर के साथ है। पहले लूप के बाद आपके चर p, b, c और s को 'n' के साथ असाइन किया जाता है। तो दूसरा लूप उन्हें n नहीं y . के रूप में लें आप कुछ इस तरह की कोशिश कर सकते हैं,

repeat = p = b = c = s = input("Would you like to go again y/n?: ").

बेहतर तरीके हो सकते हैं। लेकिन समस्या पहले लूप के बाद आपके परिवर्तनीय मूल्यों के साथ थी।

0
Pabasara Ranathunga 2 अप्रैल 2018, 04:04

इस समस्या का समाधान आसान है: पहले while लूप की शुरुआत में p, b, s, और c के मानों को रीसेट करें:

repeat = 'y'
while repeat != 'n':
    p = 'y'
    b = 'y'
    s = 'y'
    c = 'y'

    #Rest of code here
0
Jono 2906 2 अप्रैल 2018, 03:49

इस समस्या को ठीक करने के लिए आपको लूप के दौरान अपने वेरिएबल्स को इनिशियलाइज़ करना होगा। इस तरह, जब भी आप लूप के पुनरावृत्ति के साथ समाप्त हो जाते हैं, तो आपके चर फिर से शुरू हो जाएंगे, इसलिए अगले लूप की स्थिति संतुष्ट है। तो आपका कोड होना चाहिए:

while repeat != 'n':
    repeat = 'y'
    p = 'y'
    b = 'y'
    s = 'y'
    c ='y'
    while p == 'y':
        stocksPurchased=float(input("Number of stocks purchased: "))
        if stocksPurchased < 0:
            print("Negative Values are not allowed. Please re-enter.")
        else:
            p = 'n'

उसके ऊपर आपको अपना इंडेंटेशन ठीक करना चाहिए क्योंकि यह थोड़ा हटकर लगता है।

0
Stoicas 2 अप्रैल 2018, 03:50

आपको ये पंक्तियाँ लिखनी हैं:

p = 'y'
b = 'y'
s = 'y'

मुख्य while लूप के अंदर। तब यह आपकी समस्या का समाधान करेगा।

0
Mushif Ali Nawaz 2 अप्रैल 2018, 03:51

आपको पहली बार लूप के अंदर सशर्त रीसेट करने की आवश्यकता है।

वह है पुट

p = 'y'
b = 'y'
s = 'y'

आपकी अंतिम पंक्ति के बाद

0
veronik 2 अप्रैल 2018, 03:56