Python in Java umwandeln?

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
wolle_R
User
Beiträge: 2
Registriert: Mittwoch 8. Juli 2015, 09:24

Hallo,

bin ganz neu im Forum und habe ein Frage zu einem Code von mir. Den habe ich vor ein paar Jahren geschrieben und brauche ihn jetzt wieder aber in Java :/
Es geht darum, dass ich eine Zahl, die als Array vorliegt, um eins erhöhe.
Jetzt die Frage, ob man diesen Code mit ein paar kleinen Änderungen auch in Java verwenden kann?

Code: Alles auswählen

a=[1,2,3,4,5]
b=[1,9,9,9,9,9,9,9,9,9,9,9,]

def inkrement(array):
                number="".join(str(x) for x in array)
                new_number=str(int(number)+1)
                new_array=list(new_number)
                result=[int(x) for x in new_array]

                return result
                
print(inkrement(a))
print(inkrement(b))
Viele Grüße,
wolle_R
Zuletzt geändert von Hyperion am Samstag 28. November 2015, 12:30, insgesamt 1-mal geändert.
Grund: Code in Codebox-Tag geändert!
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@wolle_R: die Frage ist zuerst, warum man überhaupt sowas braucht. In Java würde man das Inkrementieren wohl gleich in der Liste machen, also eher sowas übersetzen:

Code: Alles auswählen

def inkrement(array):
    carry = 1
    result = []
    for k in reversed(array):
        carry, k = divmod(k + carry)
        result.append(k)
    if carry:
        result.append(carry)
    result.reverse()
    return result
wolle_R
User
Beiträge: 2
Registriert: Mittwoch 8. Juli 2015, 09:24

Hallo Sirius,

vielen Dank für die Antwort. Naja "brauchen" tue ich es nicht, es ist für die Uni.
Python hatte ich in der Schule gelernt und diese Aufgabe gibts jetzt in Java. Ich dachte, es gibt vllt eine Möglichkeit den Code in jave zu transferieren, ohne viele Änderungen zu machen...
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ja, diese Möglichkeit gibt es. Der empfohlene Weg bei Uni-Aufgaben ist dabei stets eigenständiges Nachdenken. Und zwar mindestens soweit, dass aufkommene Fragen über "Wie geht das?"-Niveau hinausgehen. Dann kann man sich mit diesen Fragen ggf hier im Thread nochmal melden.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@wolle_R: Wenn Du an der Uni Java lernst, solltest Du auch die Aufgabe in Java neu programmieren und nicht versuchen, nach Pythonart in Java zu schreiben. Jede Sprache hat ihre eigenen Best Practices und etwas wörtlich zu übersetzen ist meistens nicht der beste Weg.
kodela
User
Beiträge: 185
Registriert: Montag 12. Oktober 2015, 21:24
Wohnort: Landsberg am Lech
Kontaktdaten:

@Sirius3:

Ich versuche mich gerade an diversem Beispielcode und bin dabei auf den Deinen hier in diesem Thread gestoßen.

In diesem verwendest Du 'k = divmod(k + carry)'. Dabei wird mit divmod() nur ein Argument übergeben obwohl laut Logik und Dokumentation es doch zwei sein müssten.

Einfach das Pluszeichen durch ein Komma zu ersetzen, kann auch nicht die Lösung sein, denn auch die Rückgabe liefert ein Zahlenpaar.

Kannst Du mir bitte helfen, dies zu verstehen.

MfG, kodela
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@kodela: Es sollte 'carry, k = divmod(k + carry, 10)' heissen. Falls Sirius3 dies absichtlich eingebaut hat, zeigt dies, dass zumindest Du Dich mit seiner Antwort auseinander gesetzt hast.
kodela
User
Beiträge: 185
Registriert: Montag 12. Oktober 2015, 21:24
Wohnort: Landsberg am Lech
Kontaktdaten:

@kbr:

Danke für die Aufklärung. Jetzt ist mir alles klar.

MfG, kodela
Antworten