Hi Chidinma,

I'm afraid it is very difficult for me to understand your code, because 
your email program (Yahoo mail perhaps?) has mangled the code and put it 
all on one single line:

On Sat, Sep 03, 2016 at 09:45:17PM +0000, Chidinma via Tutor wrote:

> def calculate_tax(dict_inp):  result = {}  if dict_inp == {}:    result = 
> "Please enter valid inputs"  else:    for k, v in dict_inp.items():      try: 
>        x = int(dict_inp[k])      except ValueError:        print("That's not 
> an int!")        break      if(x):        if x > 50000:          tax = ((x - 
> 50000) * 0.3) + 4812.5 + 2110 + 1530 + 900          result[k] = tax        
> elif x > 30750:          tax = ((x - 30750) * 0.25) + 2110 + 1530 + 900       
>    result[k] = tax        elif x > 20200:          tax = ((x - 20200) * 0.2) 
> + 1530 + 900          result[k] = tax        elif x > 10000:          tax = 
> ((x - 10000) * 0.15) + 900          result[k] = tax        elif x > 1000:     
>      tax = ((x - 1000) * 0.1)          result[k] = tax        else:          
> tax = 0          result[k] = tax      else:        print("Yearly income is 
> not an integer")    return result    dict_inp = {'Alex': 500,'James': 
> 20500,'Kinuthia': 70000}#dict_inp = {200: 1500,300: 20500,400: 
> 70000}print(calculate_tax(dict_inp))

You may be able to prevent that by turning of "formatted text", or "rich 
text", or "HTML email", or whatever your email program calls this 
feature.


> But I get the result:
> 
> THERE IS AN ERROR/BUG IN YOUR CODE

How are you running this? Python doesn't normally print "THERE IS AN 
ERROR/BUG IN YOUR CODE". My guess is that you are using one of the 
on-line Python courses where you type your code into the web page. Am I 
right? Which one?


> Results: Internal Error: runTests aborted: TestOutcomeEvent(handled=False, 
> test=, result=, outcome='error', exc_info=(, AttributeError("'int' object has 
> no attribute 'items'",), ), reason=None, expected=False, shortLabel=None, 
> longLabel=None) is not JSON serializable{'James': 2490.0, 'Alex': 0, 
> 'Kinuthia': 15352.5}

That error doesn't seem to have anything to do with your code. Are you 
sure it is connected to the code you give above?

If you are using a website, it might be a bug in the website.



> But when i take away the .items(), i get:
>     for k, v in dict_inp:
> ValueError: too many values to unpack

The first thing to confirm that dict_inp is a dict. Run:

print( isinstance(dict_inp, dict) )

just before that "for ..." line. If it prints True, then change the for 
line to:

    for k, v in dict_inp.items():

What happens then?


_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to