Hallo Leute..
Ich bin neu hier im Forum und hoff mal ihr könnt mir helfen..
Also.. Mit meinem Zahlenratenprogramm bin ich soweit :
import random
secret = random.randint(1,100)
guess = 0
i = 0
p = 8
while guess != secret:
guess = input("Raten Sie. Sie haben noch", p, "Versuche: ")
if guess < secret:
print "Zu klein"
if guess > secret:
print "Zu gross"
i = i + 1
p = p - 1
if i > 8 :
print "Schade. Sie haben es nicht geschafft."
print "Super, Sie haben es in", i, "Versuchen geschafft!"
Das Problem ist jetzt nur, dass durch p immer diese Fehlermeldung kommt...
Traceback (most recent call last):
File "C:\Python27\zahlenraten.py", line 8, in <module>
guess = input("Raten Sie. Sie haben noch", p, "Versuche: ")
TypeError: [raw_]input expected at most 1 arguments, got 3
Hab schon alles mögliche versucht...
Danke schonmal im Vorraus...
Zahlenraten
Bitte setze deinen Code in Python-Code-Tags, sonst ist er nicht leserlich.morice18 hat geschrieben:Code: Alles auswählen
Traceback (most recent call last): File "C:\Python27\zahlenraten.py", line 8, in <module> guess = input("Raten Sie. Sie haben noch", p, "Versuche: ") TypeError: [raw_]input expected at most 1 arguments, got 3
Statt input solltest du bei Python 2.x lieber raw_input verwenden. input akzeptiert jeden beliebigen Python-Code und ist damit brandgefährlich. Beim Einsatz von raw_input musst du das Ergebnis dann nur noch mit int() in den passenden Typ verwandeln.
Jetzt zur Frage an sich. Wie die Fehlermeldung ja sehr deutlich sagt akzeptiert raw_input (genau wie input) nur maximal ein Argument. Du übergibst allerdings drei Argumente. Setze die drei Einzelteile zu einem einzigen String zusammen.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Bei dir? Die hier:
Fein säuberlich mit `,` getrennt. `input` ist kein `print`.
Code: Alles auswählen
input("Raten Sie. Sie haben noch", p, "Versuche: ")Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
mach es so: guess = input("Raten Sie. Sie haben noch" + p + "Versuche: ") Wird als ein String angesehen 
Edit: Musst aber zuerst p in einen string umwandeln: p = str(p), dann funktionierts
Edit: Musst aber zuerst p in einen string umwandeln: p = str(p), dann funktionierts
Zuletzt geändert von Newcomer am Dienstag 1. November 2011, 22:41, insgesamt 1-mal geändert.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Na zum Beispiel mit Stringformatierung
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Newcomer hat geschrieben:mach es so: guess = input("Raten Sie. Sie haben noch" + p + "Versuche: ") Wird als ein String angesehen
Code: Alles auswählen
>>> p = 23
>>> "Raten Sie. Sie haben noch" + p + "Versuche: "
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objectsMichael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Bitte nicht schon wieder input verwenden. Zudem wird das so nicht funktionieren.Newcomer hat geschrieben:mach es so: guess = input("Raten Sie. Sie haben noch" + p + "Versuche: ") Wird als ein String angesehen
Code: Alles auswählen
TypeError: cannot concatenate 'str' and 'int' objectsgrad nochmal ein paar dinge probiert.. da kommt immer noch der fehler:
Code: Alles auswählen
Traceback (most recent call last):
File "C:\Python27\zahlenraten.py", line 8, in <module>
guess = input("Raten Sie. Sie haben noch" + p + "Versuche: ")
TypeError: cannot concatenate 'str' and 'int' objectsUm das für Einsteiger mal direkt mit einem kleinen Beispiel zu zeigen:cofi hat geschrieben:Na zum Beispiel mit Stringformatierung
Code: Alles auswählen
>>> n = 667
>>> "{0}: the neighbor of the beast".format(n)
'667: the neighbor of the beast'Mit der Korrektur läuft es zwar, die Programmlogik wird damit aber immer schlimmer. Die von cofi vorgeschlagene Stringformatierung ist hier das Mittel der Wahl.Newcomer hat geschrieben:mach es so: guess = input("Raten Sie. Sie haben noch" + p + "Versuche: ") Wird als ein String angesehen
Edit: Musst aber zuerst p in einen string umwandeln: p = str(p), dann funktionierts
gut dann so:
Perfekt (-:
Code: Alles auswählen
guess = input("Raten Sie. Sie haben noch " + str(p) + " Versuche: ")
Raten Sie. Sie haben noch 5 Versuche: - cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Code: Alles auswählen
In [12]: p = 2/3
In [13]: "Raten Sie. Sie haben noch " + str(p) + " Versuche: "
Out[13]: u'Raten Sie. Sie haben noch 0.666666666667 Versuche: 'Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
@ cofi und /me
ich verstehe nicht was an der foramtmethode besser sein soll:
ich verstehe nicht was an der foramtmethode besser sein soll:
Code: Alles auswählen
>>> p=2/3
>>> "{0}".format(p)
'0.6666666666666666'
>>> 