Seite 1 von 2
Zahlenraten
Verfasst: Dienstag 1. November 2011, 21:22
von morice18
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...
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 21:34
von /me
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
Bitte setze deinen Code in Python-Code-Tags, sonst ist er nicht leserlich.
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.
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 22:18
von morice18
welche drei argumente gibt es denn?
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 22:28
von cofi
Bei dir? Die hier:
Fein säuberlich mit `,` getrennt. `input` ist kein `print`.
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 22:33
von morice18
ok.. soweit hab ich es kapiert... aber ich weiß immer noch nciht, wie ich das lösen soll..
-.-
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 22:37
von Newcomer
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
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 22:38
von cofi
Na zum Beispiel mit
Stringformatierung
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 22:39
von cofi
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' objects
Ach ja?
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 22:40
von /me
Newcomer hat geschrieben:mach es so: guess = input("Raten Sie. Sie haben noch" + p + "Versuche: ") Wird als ein String angesehen

Bitte nicht schon wieder input verwenden. Zudem wird das so nicht funktionieren.
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 22:42
von morice18
grad 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' objects
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 22:44
von Newcomer
ich habs edited, schaut euch nochmal meinen beitrag an (-:
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 22:44
von /me
Um das für Einsteiger mal direkt mit einem kleinen Beispiel zu zeigen:
Code: Alles auswählen
>>> n = 667
>>> "{0}: the neighbor of the beast".format(n)
'667: the neighbor of the beast'
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 22:46
von /me
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
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.
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 22:49
von Newcomer
gut dann so:
Code: Alles auswählen
guess = input("Raten Sie. Sie haben noch " + str(p) + " Versuche: ")
Raten Sie. Sie haben noch 5 Versuche:
Perfekt (-:
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 22:57
von BlackJack
@Newcomer: Nein, `input()` bei Python 2.7 zu verwenden ist *nicht* perfekt.
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 22:59
von cofi
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: '
Bitte sieh es ein: Wenn man Text formatieren will ist es nicht sinnvoll Strings zusammenzubasteln.
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 23:00
von Newcomer
ich hab schon 3.1. Jedem das seinen (-:
Re: Zahlenraten
Verfasst: Dienstag 1. November 2011, 23:02
von /me
Newcomer hat geschrieben:ich hab schon 3.1. Jedem das seinen (-:
Natürlich kannst du programmieren wie du möchtest. Es ist aber unfair anderen ebenfalls eine suboptimale Vorgehensweise nahezulegen.
Re: Zahlenraten
Verfasst: Mittwoch 2. November 2011, 11:28
von Newcomer
@ cofi und /me
ich verstehe nicht was an der foramtmethode besser sein soll:
Code: Alles auswählen
>>> p=2/3
>>> "{0}".format(p)
'0.6666666666666666'
>>>
Re: Zahlenraten
Verfasst: Mittwoch 2. November 2011, 11:29
von Newcomer
Aber ok es ist viel bequemer stringformatierung zu verwenden. In diesem sinne sehe ich es ein (-: