Das ist 1/8 meines Skripts:

print('Your skill:', int(charskill))
with open('C:\Documents and Settings\Welcome\My Documents\python\Task 2\lol.txt', 'w') as myFile:
    myFile.write(charskill)

Sobald ich Python ausgeführt habe, wird folgende Fehlermeldung angezeigt:

Traceback (most recent call last):
  File "C:\Documents and Settings\Welcome\My Documents\python\Task 2\Dice generator v2.py", line 39, in <module>
    myFile.write(charskill)
TypeError: must be str, not float

Wie behebe ich dieses Problem? Ich möchte, dass die Datei auf dem Notizblock ausgeführt wird, / weil es meine Hausaufgaben in der Schule sind.

5
user3024763 23 Nov. 2013 im 17:07

3 Antworten

Beste Antwort

Wenn Sie Python 3.x verwenden (möglicherweise erhalten Sie Ihr print), können Sie anstelle von .write oder der Formatierung von Zeichenfolgen Folgendes verwenden:

print('Your Skill:', charskill, file=myFile)

Dies hat den Vorteil, dass dort ein Leerzeichen und ein Zeilenumbruchzeichen für Sie eingefügt werden und keine expliziten Konvertierungen erforderlich sind.

7
Jon Clements 23 Nov. 2013 im 13:22

Sie sollten das Objekt str an file.write übergeben . Aber es scheint, als wäre charskill ein float Objekt.

Ersetzen Sie folgende Zeile:

myFile.write(charskill)

Mit:

myFile.write(str(charskill)) # OR   myFile.write(str(charskill) + '\n')

Oder

myFile.write('{}'.format(charskill)) # OR  myFile.write('{}\n'.format(charskill))

float in str konvertieren.

6
falsetru 23 Nov. 2013 im 13:09

Versuchen Sie, Ihren Schwimmer auf eine Zeichenfolge zu werfen, bevor Sie ihn schreiben:

myFile.write(str(charskill))
1
zjm555 23 Nov. 2013 im 13:10