On 26/02/12 23:29, Sukhpreet Sdhu wrote:

import string

Are you using a very old versioon opf python?
If not you should not use string.
The built in string methods can do everything you
want without resorting to string.

print "Welcome to the numeric conversion program"
print "Please enter command"
data=raw_input()
now = 0
previous = 0
total = 0
if data == "r":
     print "Enter roman numeric to convert in arabic"
     roman_numeric=string.swapcase(raw_input("Enter the Roman Numeral to convert to 
arabic"))

Are you sure you want swapcase()? I'd have thought uppercase()
would be more effective given the tests below.

Using built in methods that line becomes:

roman_numeric=raw_input("Enter the Roman Numeral to convert to arabic").uppercase()


  if roman_numeric == ("M" or "D" or "L" or "C" or "L" or "X" or "V" or "I"):

This is just wrong!
The parenthesised list will evaluate to True so you are testing if the variable is True, which it will be if not empty.

You want:

if roman_numeric in ("M","D","L","C","L","X","V","I"):

      Length = len(roman_numeric) - 1

If the variable is one of the items in your list it is only 1 char long so you re setting Length to zero. Is that what you want?

      i = roman_numeric[Length]

If you really want to extract the last digit use a -1 index.
In which case you dshould do the same for the check on valid values...


      if i == "M":
          now = 1000
          if i == "D":
              now = 500

Are you sure you want this structure?
It would look a lot neater using elif

       if i == "M":
           now = 1000
       elif i == "D":
           now = 500
       elif i == "C":
            now = 100

But better still would be to use a dictionary:

values = { 'I':1, 'V':5, 'X':10,...'D':500, 'M':1000 }

now = values[i]

                                  acc = now
                                  if (previous>= now):
                                      total += acc-prvious

spelling error in prvious

                                      print "The total is",total
                                      if (previous<= now):
                                          total += acc-prevous
                                          print "The total is",total
                                          else :

This else doesn't line up with any if.

>                                               if data == "a" :

else:
   if <cond>:

could just be

elif <cond>:

HTH,

--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/

_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to