2017-09-08 5 views
0

Disclaimer: Ich bin 16 und habe gerade meine A-Levels begonnen, Computing ist eines meiner Themen.Wie suche ich mehrere Bereiche?

Also hatte ich eine Herausforderung, einen Steuersatzrechner zu machen. Ich habe Probleme die Gehälter zu erhalten versuchen, die richtige Steuer Rabatt zu erhalten:

personal_allowance = 11500  
basic_rate = range(11501,45001)  
higher_rate = range(45002,150001) 
additional_rate = range(150002,(1 ** 15)) 

br_tax = float(0.2) 
hr_tax = float(0.4) 
ad_tax = float(0.45) 

Das Problem ist, wenn Sie die Zahlen unterscheiden:

#if not income_amount in basic_rate: 
    print("You pay 20% tax. You will pay:\n£"+str("%.2f" % round((income_amount * br_tax),2))) 
    income_amount = 0 
    time.sleep(0.6) 
    print("-------------") 
    time.sleep(2) 
    Start() 

Wie kann ich diese Kommentarzeile bekommen selbst zu sortieren heraus, ich habe auch solche für die höheren Gehälter, aber alle standardmäßig auf diesen Block und nicht die anderen für die anderen Bereiche. Offensichtlich < und > funktionieren nicht und notinis Kombinationen scheinen auch nicht zu helfen.

Als eine Nebenbemerkung, funktioniert das doppelte Sternchen als Exponent, da mein Code mich nicht richtig zeigt?

+1

mit einigen kleinen Anpassungen arbeitet (vor allem 'income_amount bewegen = 0 'Definition vor der Zeile in es gedruckt wird, und Kommentar- den' if' Klausel) Code scheint für mich zu arbeiten . Ich gebe z. '60000', und" 12000.0 "als besteuerter Kurs zurückbekommen. Soll das nicht geschehen? Kannst du mehr erklären, was nicht funktioniert? Beispieleingaben mit erwarteten Ausgaben und falschen Ausgaben? – davedwards

+0

Die Operatoren '**' machen zwar eine Potenzierung, aber Sie scheinen die falschen Argumente zu geben. '1 ** 15' ist' 1' (da 1 auf * alle * erhöht ist, ist 1). Ich vermute du wolltest '10 ** 15'. Sie können es mit der exponentiellen Notation für Floats verwechseln, wobei '1e15' das Äquivalent von' 1.0 * 10 ** 15' ist. – Blckknght

Antwort

0

Von was ich verstehen könnte, müssen Sie unterschiedliche Steuersätze basierend auf verschiedenen Einkommensplatten geben?

Die Range-Funktion in Python erstellt eine Sequenz zum Beispiel range (1,5) ist die Sequenz 1,2,3,4. Which, ich fühle mich hier nicht erforderlich ist.

Ihr Programm wird einfacher, wenn Sie stattdessen if else verwenden.

income = 20000 # income of the person 

# Rates 
br_tax = float(0.2) 
hr_tax = float(0.4) 
ad_tax = float(0.45) 
tax_to_deduct = 0 

# Calculate the tax on the amount first 

if income>=11501 and income <= 45001: 
    tax_to_deduct = br_tax*income 

# Then subtract this from your original income. 
print ('Tax:',tax_to_deduct) 
print ('Income after tax:',income-tax_to_deduct) 

Sie das gleiche für alle Konsolen, if else verwenden wird Ihr Code viel intuitiver gestalten. Ich könnte Ihre Frage missverstanden haben, lassen Sie mich wissen, wenn das der Fall ist.

Ja, der Doppelstern als Exponent

+0

Python verkettete Vergleiche können Sie den Code ein wenig mehr als das, was Sie haben, verbessern. Versuchen Sie '11501 <= Einkommen <45001', oder noch besser '11500 Blckknght

+0

@ sarthank_khannaDas ist brilliant, danke! Ich dachte mir, dass ich es so machen könnte, aber ich dachte, dass es einen schnelleren Weg dafür gegeben hätte. Das funktioniert genau so, wie ich es möchte. Vielen Dank! –

Verwandte Themen