Pierwszy Program w Pythonie

0

Cześć jestem tu nowy i chciałbym poprosić czy mógłby ktoś sprawdzić mój kod.

Dopiero zacząłem studia informatyczne i na zadanie mam napisać prosty program w Pythonie a to co napisałem nie do końca spełnia oczekiwania. Może macie jakiś pomysł co mógłbym zmienić w kodzie żeby zadziałało na 100%.

Otóż mam napisać program który zamieni arabskie liczby (w zakresie od 1 do 3999) na rzymskie. Przy czym :

1 = I , 5 = V, 10 = X, 50 = L, 100 = C, 500 = D, 1000 = M

Liczby powinny stać od lewej strony malejąco.

Np. 1975 = MDCCCCLXXV

Oto mój kod :

 

x = (int(input('Enter a number: ')))
j = 6                                        #Lista objektow
c = ""
A = [1 , 5, 10, 50, 100, 500, 1000]
R = ["I", "V", "X", "L", "C", "D", "M"]

if x > 3999:
    print('The number is to big')

else:
    
    while j > 0:
        while x > 0:
            if x > A[j]:
                x -= A[j]
                c += R[j]
        
            
            else:
                j = j - 1
                x -= A[j]
                c += R[j]
                
        break
    print(c)
    print('End')
 

Przy wpisaniu liczby 1975 wychodzi wszystko jak ma być, ale jak wpisuje inne wartości to wyniki są złe.

Macie może jakiś pomysł?

Pozdrawiam

Galeleo

0

Tu się przyda operator modulo i musisz rozbić datę na składowe. Algorytm znajdziesz szybko u wujka G.

0

O słowniku słyszał, to raz. Dwa uważasz, że

while j > 0:

ile razy ona się wykona? Czy na pewno tyle ile masz liczb?

0

Co masz na myśli z tym ile razy się wykona? Chyba tylko raz, nie ?

0

Sorki za moją polszczyznę :(

0

Złoty samiec możesz mi powiedzieć jak się rozbija date na składowe?

0
Biały Pomidor napisał(a):

Złoty samiec możesz mi powiedzieć jak się rozbija date na składowe?

W google "zamiana arabskich na rzymskie" i masz gotowe rozwiązania w prawie każdym języku :)

0

Poniższy kod (robiony na kolanie) podaje takie wyniki jak oczekujesz (co nie znaczy, że jest to zgodne z 'systemem' rzymskim, bo nie jest..)

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

l = [1,5,10,50,100,500,1000]

v = int(input('Enter a number:'))

r = ''
j = len(l) - 1
while(v > 0):
  if v - l[j] >= 0:
      v = v - l[j]
      r = r + d[l[j]]
  else:
    if j >0:
      j = j - 1;

print(r)

1 użytkowników online, w tym zalogowanych: 0, gości: 1