print-Funktion mit if-Statement

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.
Antworten
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Ich weiß, dass es mal eine Möglichkeit gab eine print()-Anweisung mit einer if-Anweisung zu koppeln. Es sah etwa so aus:

Code: Alles auswählen

print("XXX", end="." if X = 8: end = "!")
Wahrscheinlich ganz anders. Jedenfalls möchte ich erreichen, dass am Ende ein Punkt steht, statt einem Komma, wenn in einer Liste das letzte Element erreicht wird.

Code: Alles auswählen

for x in ergebnisse:
    print(x, end=", ")
Ich möchte eben haben, dass beim letzten x ein Punkt gesetzt wird.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo,

das hat nichts mit dem print zu tun, es ist ein ganz allgemeines Statement. Verwenden kannst du es in der Form

Code: Alles auswählen

FALLS_TRUE if BEDINGUNG else FALLS_FALSE
Sebastian
Das Leben ist wie ein Tennisball.
problembär

Super, und wie prüft er nun, daß es das letzte Element der Liste ist?

Ich nehm' dafür bekanntlich das "Anti-Pattern", hier unter 2.x:

Code: Alles auswählen

#!/usr/bin/env python
# coding: iso-8859-1

ergebnisse = ("a", "b", "c", "d", "e")

a = ""
for i in range(len(ergebnisse)):
    a += ergebnisse[i]
    if i == len(ergebnisse) - 1:
        a += "."
    else:
        a += ", "
print a
So, und nun mach' mal ohne. :lol:
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Man hätte vielleicht zu Ende lesen sollen ^^

@pixewakb: Ist in ``ergebnisse`` immer etwas enthalten (ansonsten gibt es nur eine Zeile mit einem Punkt), dann könntest du einfach folgendes machen:

Code: Alles auswählen

print(", ".join(ergebnisse, end=".\n")
Sollten in ergebnisse keine Strings enthalten sein, kannst du das noch ein wenig erweitern:

Code: Alles auswählen

print(", ".join(map(str, ergebnisse)), end=".\n")
Zuletzt geändert von EyDu am Dienstag 7. Februar 2012, 20:27, insgesamt 1-mal geändert.
Das Leben ist wie ein Tennisball.
deets

Oh. Mein. Gott. Aber wer sich beständig weigert, python zu lernen... Produziert halt sowas.

So würde ich das machen:

print(", ".join(ergebnisse) + ".")

Edit: EyDu war schneller ;)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

@pixewakb: Du verwendest die ``print``-_Funktion_ (Python3 oder Python2 + __future__-Import).

deeds verwendet das ``print``-_Statement_ (ueberfluessigerweise mit Klammern) -- zumindest nehme ich das mal an.

Bei letzterem gibt es kein `end` Argument.

Weil ich schon beim Kritisieren bin: Bei EyDu fehlt ein `)` nach dem 2. Komma.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

cofi hat geschrieben:Weil ich schon beim Kritisieren bin: Bei EyDu fehlt ein `)` nach dem 2. Komma.
Du meinst natürlich vor dem zweiten Komma. Wo wir schon dabei sind ... :twisted:
Das Leben ist wie ein Tennisball.
deets

@cofi

Wie kommst du darauf, dass ich das Statement verwende?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

@deets
Du verwendest nicht das `end`-Argument, sondern machst das manuell ;)

@EyDu
Oh .. das is jetzt aber peinlich :/
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

cofi hat geschrieben:Bei EyDu fehlt ein `)` nach dem 2. Komma.
Und ich dachte gerade, ein "end" Argument wäre durchaus ein schönes Gimmick für die "join" Methode.
Antworten