Problem bei ersten python versuchen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
BlackPython
User
Beiträge: 16
Registriert: Samstag 15. Oktober 2011, 09:22

Samstag 15. Oktober 2011, 09:40

Hallo,
ich bin neu im forum und ich habe ein problem mit meinen ersten python versuchen:

1. Ein Programm soll die Zahlen 1 bis 100 ausgeben. Alle Zahlen, die einen 7er an der Einer- oder an der Zehnerstelle enthalten, sollen durch "*" ersetzt werden, ebenso alle Zahlen, die durch 7 teilbar sind.

2. Gib eine Tabelle mit x und x! aus. x! heißt Fakultät oder Faktorielle und ist das Produkt der natürlichen Zahlen von 1 bis x. 0! ist gleich 1.
Form der Tabelle:

0!=1
1!=1
2!=2
3!=6 usw.

Das war Hausübung und ich weiss nicht wie ich das machen soll :S
und da ich neuling bin bitte ich um einfache codes :P

bei 1. hab ichs wie folgt ausprobiert:

Code: Alles auswählen

for i in range(1,70):
    if i%7:
        print i
    else:
        print "*"
for i in range(70,80):
    if i<80 and 69<i:
        print "*"
    else:
        print i
for i in range(80,101):
    if i%7:
        print i
    else:
        print "*" 
aber dann fehlen noch die Zahlen, die einen 7er als einerstelle haben :/

bitte um hilfe..
mfg Blacki :)
Krabman318
User
Beiträge: 21
Registriert: Sonntag 14. August 2011, 14:36

Samstag 15. Oktober 2011, 10:37

Zu 1.:
Das müsste funktionieren:

Code: Alles auswählen

for i in range(1,70):
    if "7" in str(i):
        print "*"
    elif i%7:
        print i
    else:
        print "*"
for i in range(70,80):
    if "7" in str(i):
        print "*"
    else:
        print i
for i in range(80,101):
    if "7" in str(i):
        print "*"
    elif i%7:
        print i
    else:
        print "*" 
Benutzeravatar
/me
User
Beiträge: 3192
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Samstag 15. Oktober 2011, 10:48

Wozu denn den Bereich in Einzelteile aufsplitten?

Der korrekte Ansatz besteht allerdings in der Tat darin, die Zahl mit str() in einen String zu verwandeln.
BlackPython
User
Beiträge: 16
Registriert: Samstag 15. Oktober 2011, 09:22

Samstag 15. Oktober 2011, 10:50

vielen dank
aber gibt es statt str noch eine andere moeglichkeit?
weil str befehle haben wir noch nicht gelernt
Krabman318
User
Beiträge: 21
Registriert: Sonntag 14. August 2011, 14:36

Samstag 15. Oktober 2011, 10:51

@/me:
Stimmt,

Code: Alles auswählen

for i in range(1,101):
    if "7" in str(i):
        print "*"
    elif i%7:
        print i
    else:
        print "*"
reicht völlig aus.

EDIT:
@BlackPython:
Ohne "str(i)" geht auch

Code: Alles auswählen

for i in range(1,101):
    if i > 9 and not (i - 7)%10:
        print "*"
    elif i%7:
        print i
    else:
        print "*"
BlackPython
User
Beiträge: 16
Registriert: Samstag 15. Oktober 2011, 09:22

Samstag 15. Oktober 2011, 10:59

ok danke
aber hat noch jemand eine antwort auf 2.?
BlackJack

Samstag 15. Oktober 2011, 11:08

@BlackPython: Da das nach Python 2.x aussieht, solltest Du Dir `xrange()` statt `range()` angewöhnen, wenn Du die Liste mit Zahlen gar nicht als Liste im Ganzen benötigst.

Für die zweite Aufgabe müsstest Du Dir halt eine Fakultätsfunktion schreiben.

Edit: Und jetzt kommt wahrscheinlich wieder die Antwort dass ihr Funktionen noch nicht hattet… :roll:
BlackPython
User
Beiträge: 16
Registriert: Samstag 15. Oktober 2011, 09:22

Samstag 15. Oktober 2011, 11:43

hast recht :oops: :?
BlackJack

Samstag 15. Oktober 2011, 11:54

@BlackPython: Dann schreib Dir halt eine Fakultätsfunktion und bette den Funktionskörper an der Stelle ein, wo sonst der Aufruf stehen würde. Oder zeig etwas Eigeninitiative und verwende Funktionen bevor sie im Unterricht angesprochen wurden. Das gleiche gilt auch für grundlegende Funktionen wie `str()`.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Samstag 15. Oktober 2011, 13:45

@BlackJack, vorlernen tut man doch nicht!
the more they change the more they stay the same
Benutzeravatar
snafu
User
Beiträge: 5461
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Samstag 15. Oktober 2011, 14:25

Dav1d hat geschrieben:@BlackJack, vorlernen tut man doch nicht!
Kommt sehr darauf in, inwiefern man an den Unterrichtsinhalten interessiert ist.
shcol (Repo | Doc | PyPi)
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Samstag 15. Oktober 2011, 15:13

Die zweite Aufgabe lässt sich doch sehr einfach über eine Schleife lösen.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Samstag 15. Oktober 2011, 16:42

@snafu, bei uns ist/war vorlernen verpönt, zum einen von den (Plural von Lehrer), zum anderen galt man dann als Streber (gut seit der Oberstufe hat sich das etwas geändert)
the more they change the more they stay the same
problembär

Samstag 15. Oktober 2011, 17:15

jbs hat geschrieben:Die zweite Aufgabe lässt sich doch sehr einfach über eine Schleife lösen.

Code: Alles auswählen

perl -e 'for(0..10){$x=1;for $u (1..$_){$x*=$u}print("$_! = $x\n")}'
;)
BlackJack

Samstag 15. Oktober 2011, 19:18

@problembär: Das waren jetzt aber *zwei* Schleifen. Mit *einer* ist es kürzer:

Code: Alles auswählen

perl -e '$x=1;for(0..10){print("$_! = $x\n");$x*=$_+1}'
Antworten