python中使用if-else语句的Powerball Winning
我想解决一个有关彩票中奖的问题。我们都知道,在一个人中了彩票金额后,他们并不总是得到全部金额。他们在不同的括号中征税,我正在尝试创建一个python程序,它告诉我们对我们赢来的钱征税的金额 在评定任何税款之前,获胜者将获得6300美元的标准扣除额和4000美元的个人免税额。因此,在我们确定应纳税金额之前,我们通过公式计算应纳税金额 可征税奖金=奖金-(标准扣除+个人免税) 之后,中奖金额被分类在这些金额括号中 0美元至9225美元——10% 9225美元至37450美元——15% 37450美元至90750美元——25% 90750美元至189300美元——28% 189300美元至411500美元——33% 411500美元至413200美元——35% $413200+--39.6% 比如说。如果一个人赢了54000美元 可征税的奖金=$54000-$6300-$4000 =$43700是将要征税的金额。其中: 9225美元的税率为10%=922.50美元 剩下的34475美元尚未纳税 28225美元按15%征税=4233.75美元 剩下的6250美元尚未纳税 6250美元按25%征税=1562.50美元 欠款总额=922.5+4233.75+1562.5=$6718.75(或$6719四舍五入) 这是我的密码python中使用if-else语句的Powerball Winning,python,python-3.x,if-statement,Python,Python 3.x,If Statement,我想解决一个有关彩票中奖的问题。我们都知道,在一个人中了彩票金额后,他们并不总是得到全部金额。他们在不同的括号中征税,我正在尝试创建一个python程序,它告诉我们对我们赢来的钱征税的金额 在评定任何税款之前,获胜者将获得6300美元的标准扣除额和4000美元的个人免税额。因此,在我们确定应纳税金额之前,我们通过公式计算应纳税金额 可征税奖金=奖金-(标准扣除+个人免税) 之后,中奖金额被分类在这些金额括号中 0美元至9225美元——10% 9225美元至37450美元——15% 37450美元
winnings = float(input("Please enter your Winning amount"))
tax = 0
standardDeduction = 6300
personalExemption = 4000
taxablewinnings = winnings - (standardDeduction+personalExemption)
if taxablewinnings > 0 and taxablewinnings <= 9225:
rate1 = 9225*0.10
remainder1 = taxablewinnings-9225
if taxablewinnings > 9225 and taxablewinnings <= 37450:
rate2 = remainder1*0.15
remainder2 = taxablewinnings-37450
if taxablewinnings > 37450 and taxablewinnings <= 90750:
rate3 = remainder2*0.25
remainder3 = taxablewinnings-90750
if taxablewinnings > 90750 and taxablewinnings <= 189300:
rate4 = remainder3*0.28
remainder4 = taxablewinnings-189300
if taxablewinnings > 189300 and taxablewinnings <= 411500:
rate5 = remainder4*0.33
remainder5 = taxablewinnings-411500
if taxablewinnings > 411500 and taxablewinnings <= 413200:
rate6 = remainder5*0.33
remainder6 = taxablewinnings-413200
if taxablewinnings > 413200:
rate7 = remainder6*0.396
else:
print("Invalid winnings input")
if(winnings > 0):
print("Your tax is: $%f" % tax)
winnings=float(输入(“请输入您的中奖金额”))
税=0
标准扣除额=6300
个人免税额=4000
可征税奖金=奖金-(标准扣除+个人免税)
如果应纳税所得额>0,应纳税所得额9225,应纳税所得额37450,应纳税所得额90750,应纳税所得额189300,应纳税所得额411500,应纳税所得额413200:
比率7=剩余6*0.396
其他:
打印(“无效赢款输入”)
如果(赢款>0):
打印(“您的税款为:$%f”%tax)
我发现了错误
rate3=remainder2*0.25名称错误:未定义名称“remainder2”
如果taxablewinnings大于37450,则始终会发生此错误,因为只有taxablewinnings在37450到92250范围内时,才会定义remainder2 如果taxablewinnings大于37450,则始终会发生此错误,因为只有taxablewinnings在37450到92250范围内时,才会定义remainder2 我重写了您程序的某些部分:
winnings = int(raw_input("Amount won: "))
STD_DEDUCTION = 6300
PERSONAL_EXEMPTION = 4000
TAX_BRACKETS = [(0, 0), (9225, .1), (37450, .15), (90750, .25),
(189300, .28), (411500, .33), (413200, .35)]
taxable = winnings - (STD_DEDUCTION + PERSONAL_EXEMPTION)
tax = 0
for i in xrange(1, len(TAX_BRACKETS)):
value = TAX_BRACKETS[i][0] - TAX_BRACKETS[i-1][0]
percent = TAX_BRACKETS[i][1]
amt_to_tax = taxable if taxable < value else value
tax += amt_to_tax * percent
taxable -= amt_to_tax
tax += taxable * .396
print "Winnings: {}\nTax: {}\nWinnings after taxes: {}".format(
winnings, tax, winnings - tax)
winnings=int(原始输入(“赢得的金额”))
标准扣减=6300
个人免税额=4000
税括号=[(0,0),(9225.1),(37450.15),(90750.25),
(189300, .28), (411500, .33), (413200, .35)]
应税=奖金-(标准扣减+个人免税)
税=0
对于x范围内的i(1,len(税括号)):
值=税括号[i][0]-税括号[i-1][0]
百分比=税括号[i][1]
金额到税=应税金额<其他价值
税+=金额到税*百分比
应税-=金额到税款
税款+=应税*.396
打印“赢款:{}\n奖金:{}\n税后赢款:{}”。格式(
赢款,税,赢款-税)
我认为此解决方案比您的解决方案更健壮,但它确实包含了代码的精神。我重写了程序的某些部分:
winnings = int(raw_input("Amount won: "))
STD_DEDUCTION = 6300
PERSONAL_EXEMPTION = 4000
TAX_BRACKETS = [(0, 0), (9225, .1), (37450, .15), (90750, .25),
(189300, .28), (411500, .33), (413200, .35)]
taxable = winnings - (STD_DEDUCTION + PERSONAL_EXEMPTION)
tax = 0
for i in xrange(1, len(TAX_BRACKETS)):
value = TAX_BRACKETS[i][0] - TAX_BRACKETS[i-1][0]
percent = TAX_BRACKETS[i][1]
amt_to_tax = taxable if taxable < value else value
tax += amt_to_tax * percent
taxable -= amt_to_tax
tax += taxable * .396
print "Winnings: {}\nTax: {}\nWinnings after taxes: {}".format(
winnings, tax, winnings - tax)
winnings=int(原始输入(“赢得的金额”))
标准扣减=6300
个人免税额=4000
税括号=[(0,0),(9225.1),(37450.15),(90750.25),
(189300, .28), (411500, .33), (413200, .35)]
应税=奖金-(标准扣减+个人免税)
税=0
对于x范围内的i(1,len(税括号)):
值=税括号[i][0]-税括号[i-1][0]
百分比=税括号[i][1]
金额到税=应税金额<其他价值
税+=金额到税*百分比
应税-=金额到税款
税款+=应税*.396
打印“赢款:{}\n奖金:{}\n税后赢款:{}”。格式(
赢款,税,赢款-税)
我认为此解决方案比您的解决方案更健壮一些,但它确实包含了代码的精神。您原始问题的答案是,符号未定义,因为定义出现在未执行的“if”语句中,例如,在以下块中:
if taxablewinnings > 9225 and taxablewinnings <= 37450:
rate2 = remainder1*0.15
remainder2 = taxablewinnings - 37450
你可以(我希望)从这里看到图案。显然,最后一个括号没有上限,所以会简单一点。祝您好运。您的原始问题的答案是,符号未定义,因为定义出现在未执行的“如果”语句中,例如,在此块中:
if taxablewinnings > 9225 and taxablewinnings <= 37450:
rate2 = remainder1*0.15
remainder2 = taxablewinnings - 37450
你可以(我希望)从这里看到图案。显然,最后一个括号没有上限,所以会简单一点。祝你好运。按照你的解释,因为我来自美国境外,所以这可能是你想要的
standardDeduction = 6300
personalExemption = 4000
tax_brackets = [ ( 0, 9225, 0.10),
( 9225, 37450, 0.15),
( 37450, 90750, 0.25),
( 90750, 189300, 0.28),
(189300, 411500, 0.33),
(411500, 413200, 0.35),
(413200, None, 0.396) ]
def calculate_tax(total):
no_tax = standardDeduction + personalExemption
taxable = total - no_tax
total_tax = 0.0
for min_val, max_val, tax in tax_brackets :
if taxable <= 0:
break
amount = (max_val - min_val) if max_val is not None else min_val
if taxable <= amount:
amount = taxable
total_tax += amount * tax
taxable -= amount
return total_tax
与其在代码中只使用一次,不如将其作为一个函数,以便可以多次使用,关于代码,第一部分是不言自明的,现在是循环中有趣的部分:在这里,我们迭代tax_括号,而我们有一些东西要征税,或者直到括号用完,正如您所解释的,我们取的金额等于等级边界之间的差额,但如果该金额超过应纳税金额,我们取剩余金额,然后应用当前等级的税款并减去已使用金额
编辑
前面的函数可以用if
表示,如下所示
standardDeduction = 6300
personalExemption = 4000
no_tax = standardDeduction + personalExemption
total = float(input("Please enter your Winning amount: "))
taxable = total - no_tax
total_tax = 0.0
if taxable > 0: # brackets 1
amount = 9225 # - 0
if taxable <= amount:
amount = taxable
total_tax += amount * 0.1
taxable -= amount
if taxable > 0: # brackets 2
amount = 37450 - 9225
if taxable <= amount:
amount = taxable
total_tax += amount * 0.15
taxable -= amount
if taxable > 0: # brackets 3
amount = 90750 - 37450
if taxable <= amount:
amount = taxable
total_tax += amount * 0.25
taxable -= amount
if taxable > 0: # brackets 4
amount = 189300 - 90750
if taxable <= amount:
amount = taxable
total_tax += amount * 0.28
taxable -= amount
if taxable > 0: # brackets 5
amount = 411500 - 189300
if taxable <= amount:
amount = taxable
total_tax += amount * 0.33
taxable -= amount
if taxable > 0: # brackets 6
amount = 413200 - 411500
if taxable <= amount:
amount = taxable
total_tax += amount * 0.35
taxable -= amount
if taxable > 0: # brackets 7
amount = 413200
if taxable <= amount:
amount = taxable
total_tax += amount * 0.396
taxable -= amount
if total > 0:
print("you win",total,"and you have to paid",total_tax,"in tax")
else:
print("Invalid winnings input")
听你的解释,因为我来自美国以外
Please enter your Winning amount: 54000
you win 54000.0 and you have to paid 6718.75 in tax
>>>