Forum / Grundlagen des Programmierens / Hausübung 3 SS16
Hausübung 3 SS16
Hey, hat jemand 3. HÜ schon gemacht ?
Die Letzte elif Abfrage kannst du dir sparen weil sowieso immer Zutrifft. Du hast ja das alles schon vorher indirekt geprüft. ein einfaches else würde genügen! wenn du bei der ersten if abfrage <=0 angibst, dann sparst du dir die elif-abfrage für Zahl==0 auch.
für die Primfaktoren geht man nach der reihe alle zahlen von 2 bis 'Zahl' durch und schaut ob sie ohne Rest durch 'Zahl' teilbar sind. Sobald einmal Rest==0 True ist, ist diese Zahl ein Primfaktor. Du dividierst 'Zahl' durch den Primfaktor und startest mit der neuen 'Zahl' die schleife von vorne! zumindest habs ich so gelöst
-->for-schleife
nach der if (Zahl % i)-Abfrage addierst du auf eine Liste einen Integer: primfactor += Zahl
für was definierst du die Liste 'primfactor', wo du doch oben die vorgegebene Liste 'Faktoren' hast?
so könnte es ungefähr aussehen
ist die Zahl ein positiver integer? ..while Zahl !=1 ....primfaktor für Zahl finden (for-schleife die du fast richtig hast) ....primfaktor in Faktorenliste eintragen ....Zahl durch Primfaktor teilen ..Faktorenliste zurück geben kein ganzzahliger integer: ..Falsch zurück geben
weiß jmd warum bei mir zum Bsp bei Liste = ['ZWei2','DreI','SieBen', 'Dreizehn'] nur das immer das letzte Element umgewandelt wird? hier meine bsp1)
neueListe = []
for i in range(len(Liste)):
l = str(Liste[i])
l = l.swapcase()
neueListe.append(l)
du musst das l.swapcase() und append(l) muss für jeden durchlauf der schleife gelten: for i in range(len(Liste)): ....l = str(Liste[i]) ....l = l.swapcase() ....neueListe.append(l)
Man muss für jeden einzigen Buchstaben prüfen ob er gross oder klein ist mit isupper und islower. Dann muss man mit upper and lower es umtauschen. Dann muss man alle Buchstaben wieder zu einem Wort zusammenfügen und dann das Wort wieder einer Liste hinzufügen. Es ist nicht umbeding lang, aber komplizierter da du es schaffen musst zuerst ein Wort aus der Liste zu nehmen und dann ein Buchstabe aus dem Wort.
Für die Aufgabe 2: https://www.youtube.com/watch?v=r9mqm2dsFk4
Erstes Beispiel der HÜ3 ist OHNE .swapcase() zu lösen... empfehlen die Tutoren!
Hier meine Lösung mit Schleifen:
neueListe_1 = []
neueListe = Liste[:]
l = (len(Liste[0]))
k = 0
for i in range(len(Liste)):
for j in range(len(Liste[i])):
if Liste[i][j].isalpha():
if Liste[i][j].islower():
neueListe_1.append(Liste[i][j].upper())
else:
neueListe_1.append(Liste[i][j].lower())
else:
neueListe_1.append(Liste[i][j])
if i == 0:
neueListe[0] = "".join(neueListe_1[0:(len(Liste[0]))])
else:
k = k + len(Liste[i-1])
l = l + len(Liste[i])
neueListe[i] = "".join(neueListe_1[k:l])
return neueListe
Das ist mein Algorithmus für das 2.Beispiel. Das Programm gibt mir allerdings zu viele Zahlen zurück. Also zB bei 16 [2,2,4,8], bei 25 [5,5,5]. Weiß wer was falsch ist? def PrimfaktorZerlegung(Zahl): Faktoren = [] if Zahl <= 0 : return False elif Zahl == 1: return [] else: for i in range(2,int(Zahl)): if Zahl % i == 0: for j in range(2,int(Zahl**(1./2.))+1): if i%j != 0: Faktoren.append(i) return Faktoren
Hier ist meine Lösung zum Beispiel 2!
- 1 Download Nur für Studenten!
Rick @BeceilginAutor
Wirtschaftsingenieur... · Technische Universit...
BSP1 hab i schon gemacht. #--------------------------------------------------------------# neueListe = [ ] for i in range(len(Liste)): a= str(Liste[i]) a=a.swapcase() neueListe.append(a)
#--------------------------------------------------------------#