试图在Python

时间:2015-07-19 04:26:07

标签: python python-2.7 if-statement conditional conditional-statements

所以今天是我学习编程语言的第一天,所以我对Python很新。我正在密歇根大学参加在线Python for Informatics课程,我们的第一个真正的任务是创建一个简单的毛费率计算器。

这很简单,所以我决定扩大计划可以用来计算净工资和税收账户。我遇到的麻烦是确定我如何动态地(如果这是正确的话)根据一系列条件语句设置变量“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”尚未定义。我最终希望程序根据用户“grosspay”的设置来设置“taxrate”。我正在尝试做什么?我假设它是,我只是不明白该怎么做。

非常感谢任何帮助如果有人想知道循环是什么,我有一个用户错误检查程序,我正在处理这部分程序完成后。

1 个答案:

答案 0 :(得分:1)

你的逻辑在if grosspay > range(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...)")