Pierwszy Program w Pythonie

Odpowiedz Nowy wątek
Biały Pomidor
2016-11-04 20:53
Biały Pomidor
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

Pozostało 580 znaków

Złoty Samiec
2016-11-04 20:58
Złoty Samiec
0

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

Pozostało 580 znaków

2016-11-04 21:00

Rejestracja: 7 lat temu

Ostatnio: 2 minuty temu

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?

Pozostało 580 znaków

Biały Pomidor
2016-11-04 21:04
Biały Pomidor
0

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

Pozostało 580 znaków

Biały Pomidor
2016-11-04 21:21
Biały Pomidor
0

Sorki za moją polszczyznę :(

Pozostało 580 znaków

Biały Pomidor
2016-11-04 21:25
Biały Pomidor
0

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

Pozostało 580 znaków

Krzywy Kotttt
2016-11-04 22:03
Krzywy Kotttt
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 :)

Pozostało 580 znaków

2016-11-04 23:11

Rejestracja: 6 lat temu

Ostatnio: 1 rok temu

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)

Pozostało 580 znaków

Odpowiedz

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