繁体   English   中英

尝试基于Python中的条件语句设置变量

[英]Attempting to set variable based on conditional statement in Python

因此,今天实际上是我学习编程语言的第一天,因此我对Python还是很陌生。 我正在密歇根大学学习在线Python信息学课程,我们的第一个实际任务是创建一个简单的总工资率计算器。

这很简单,所以我决定扩展该程序可以计算净工资和税收的功能。 我遇到的麻烦是确定我如何基于一系列条件语句来动态地设置变量“ taxrate”的值(如果这是正确的话)。

我还没有找到搜索Python网站和Stack Overflow的答案。 我认为我对编程的有限理解可能会限制我正确解释所发现内容的能力。

只是寻求一点帮助:

码:

#This program is intended to calculate the net pay of employees
#This first section includes a loop for mistakes and finds gross pay

while True:

hours = raw_input('How many hours do you work weekly?')
hours1 = float(hours)
rate = raw_input('What is your hourly rate of pay?')
rate1 = float(rate)
grosspay = hours1 * rate1
taxstatus = raw_input('Do you pay taxes?')


#This secdtion is establishing the tax bracket the user falls into
taxbracket = taxrate
if grosspay <= 1000:
    taxrate = 0.90
if grosspay > range(1000,1500):
    taxrate = 0.78
if grosspay >= 1501:
    taxrate = 0.63

# This section is intended to calculate pay after taxes
grosspay = hours1 * rate1
if taxstatus == 'yes':
    netpay = grosspay * taxrate
print'Your weekly pay after taxes is',netpay
if not taxstatus:
    print grosspay

当我在PyCharm中运行它时,它告诉我尚未定义“ taxrate” 我最终希望程序根据用户的“总收入”来设置“税率” 我想做的事可能吗? 我以为是这样,而我只是不知道该怎么做。

非常感谢您的帮助 ,以防万一有人想知道循环是什么,我需要在程序的这一部分完成后进行用户错误检查。

if grosspay > range(1000, 1500)您的逻辑就会有点怀疑。 比一系列数字“更大”意味着什么? 我的猜测是,您输入的总grosspay实际上在[1000, 1500) grosspay [1000, 1500)范围内,因此它在您的代码中遇到了此逻辑错误,无法将其分配给任何东西。

检查数字是否在范围内的通常方法是使用in运算符。

if some_num in range(1, 10):
    print("some_num is 1, 2, 3, 4, 5, 6, 7, 8, or 9")

但是,您会注意到some_num 必须包含在整数范围[1, 9]中才能触发。 如果some_num7.5 ,这将失败。 这是令人难以置信的可能在工资总额的情况。 某人的薪水达到正好相等的美元金额的机会是什么?

相反,您可以做的是:

if grosspay <= 1000:
    taxrate = 0.90
elif 1000 < grosspay <= 1500:
    taxrate = 0.78
elif 1500 < grosspay:
    taxrage = 0.63

使用elif代替一系列的if s会使代码效率更高一些,因为按定义, if/elif/else是一个互斥的块。 换一种说法:

a = 1
b = 2

if a == 1:
    print("This gets done!")
if b == 2:
    print("This gets done!")

if a == 1:
    print("This gets done!")
elif b == 2:
    print("BUT THIS DOESN'T!")
else:
    print("(this doesn't either...)")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM