Hallo liebe Mitglieder ,
ich bin neu in Python eingestiegen und versuche seit nun einiger Zeit folgendes zu lösen:
Eine Rangfolge mit den Plätzen
1.
2.
3.
4.
Zu denen die Namen
1. Wolfgang
2. Hans
3. Dieter
4. Max
gelistet werden sollen, so ausgeben:
Gratuliere Wolfang zum 1 Platz
Gratuliere Hans zum 2 Platz
(...)
Mein Code sieht folgendermaßen aus:
[b]>>>a = ["Wolfgang", "Hans", "Dieter", "Max"]
>>>b = [1,2,3,4]
>>>zip (a,b)
>>>for x in zip (a,b):
... print "Gratuliere %s zum %d-ten Platz" %(a,b)
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
TypeError: %d format: a number is required, not list.[/b]
Selbstverständlich freue ich mich über jegliche Tipps und Tricks, mit denen man einfacher auf die Lösung kommt. Aber eine Lösung zu meinem Code wäre wünschenswert.
LG
Philipp
Newbie - Frage zur for-Schleife und print mit %
mach in deiner for-schleife mal ein print x, print type(x) und schau mal was x ist.
deine Klammer (a,b) ist nicht das was du willst.
deine Klammer (a,b) ist nicht das was du willst.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Um einen bei Eins beginnenden, fortlaufenden Zähler zu erhalten, würde man eigentlich nicht erst eine "vorgefüllte" Liste, sondern einfach 'enumerate' verwenden.
Code: Alles auswählen
for i, item in enumerate(items, 1):
....
- __blackjack__
- User
- Beiträge: 13079
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Eine Liste mit fortlaufenden Zahlen ist auch nicht so das wahre. Da würde man eher die `enumerate()`-Funktion verwenden. Und vielleicht auch nicht mehr ``%`` sondern die `format()`-Methode.
Code: Alles auswählen
#!/usr/bin/env python
# coding: utf-8
from __future__ import absolute_import, division, print_function
def main():
names = ['Wolfgang', 'Hans', 'Dieter', 'Max']
for place, name in enumerate(names, 1):
print('Gratuliere {} zum {}. Platz.'.format(name, place))
if __name__ == '__main__':
main()
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Hallo Blackjack,__blackjack__ hat geschrieben: ↑Montag 13. August 2018, 17:32 Eine Liste mit fortlaufenden Zahlen ist auch nicht so das wahre. Da würde man eher die `enumerate()`-Funktion verwenden. Und vielleicht auch nicht mehr ``%`` sondern die `format()`-Methode.Code: Alles auswählen
#!/usr/bin/env python # coding: utf-8 from __future__ import absolute_import, division, print_function def main(): names = ['Wolfgang', 'Hans', 'Dieter', 'Max'] for place, name in enumerate(names, 1): print('Gratuliere {} zum {}. Platz.'.format(name, place)) if __name__ == '__main__': main()
vielen Dank für deinen Code - er funktioniert, wie erwartet, einwandfrei. Ich konnte alles nachvollziehen, außer den If-Befehl. Wie hängt der If teil mit dem oberen main () Teil zusammen. Kannst du mir das bitte etwas genauer erläutern.
Ich bin ein totaler Anfänger und es wäre wunderbar, wenn du mir etwas Hilfe zum Verstehen gibst.
LG
Philipp
- __blackjack__
- User
- Beiträge: 13079
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@pganster: `__name__` ist eine Zeichenkette die den Namen des Moduls enthält wenn man es importiert aber den Wert '__main__' wenn das Modul als Programm ausgeführt wird. So kann man das Modul importieren ohne dass die `main()`-Funktion deswegen ausgeführt wird.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman