943,718 Members | Top Members by Rank

Ad:
  • Python Discussion Thread
  • Unsolved
  • Views: 1087
  • Python RSS
Apr 9th, 2009
0

***Help! Code not working out-Roman Numeral Converter

Expand Post »
This is a project I'm working on for a class. I'm pretty new to CS and python...and I found that I am totally lost. I'm suppose to write a program to convert Roman numerals to arabic numbers. It is also suppose to handle invalid input.

Here is what I have so far:

def roman_converter():

R=str.upper(raw_input("Enter a Roman numeral to convert to Arabic: "))

d={'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}

s=0
for c in range(len(R)):
while R[0]<R[1]:
x=R[1]-R[0]
s=s+x
else:
x=R[0]+R[1]
s=s+x
R=R[2:]
else:
return s

print R, '=', s

roman_converter()

I'm getting all sorts of errors with this, and I don't know what to do about the handling of invalid input... help please!
Reputation Points: 10
Solved Threads: 0
Newbie Poster
tech12 is offline Offline
1 posts
since Apr 2009
Apr 9th, 2009
0

Re: ***Help! Code not working out-Roman Numeral Converter

Well, there's two types of validation... you'll need to first verify that the numerals are in the right order, ie, you can't have IC or something, but you could have XC, or IX, but not VX or IL, etc. That's one validation.

The other validation that you would need is to make sure that ONLY characters used for roman numerals are input. If you're just working with I,V,X,L,C,D,and M, then any other character is invalid.

Does that make sense?
Team Colleague
Reputation Points: 186
Solved Threads: 147
Cookie... That's it
alc6379 is offline Offline
2,519 posts
since Dec 2003
Apr 9th, 2009
0

Re: ***Help! Code not working out-Roman Numeral Converter

You might start with code tags (use the "#" icon) and then explain what the program you posted does, as it doesn't appear to make sense. Once you reach this line
while R[0]<R[1]:
it appears to be an infinite loop, but it's difficult to tell without proper indents.

Basically, you want
1) the dictionary that you have named "d" and
2) test that all input letters are in the dictionary, with a test:
3) if the value of this letter is less than the value of the next letter then subtract the value. Otherwise, add the value. Post some code with comments as to what it does if you want more help.
Last edited by woooee; Apr 9th, 2009 at 11:57 pm.
Reputation Points: 741
Solved Threads: 692
Nearly a Posting Maven
woooee is offline Offline
2,305 posts
since Dec 2006

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in Python Forum Timeline: Error msg, when doing a function
Next Thread in Python Forum Timeline: Moving data from one Tkinter GUI to another





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC