Ich bekomme in einem Skript diesen Fehler ausgeworfen, ich habe aber jeder nicht natürlichen Zahl "float" zugeordnet. Wie kann ich mir anzeigen lassen in welchem file/in welcher Zeile das Problem produziert wird.
Sorry aber bin wirklich ein noob!
"list indices must be integers or slices not float" Ursache lokalisieren
- __blackjack__
- User
- Beiträge: 13103
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@n00b@r00t: Du bekommst ja nicht nur diese eine Zeile sondern einen Traceback. An dem kannst Du die Stelle finden wo das Problem in Deinem Code seinen Ursprung hat.
Was bedeutet „ich habe aber jeder nicht natürlichen Zahl "float" zugeordnet“?
Was bedeutet „ich habe aber jeder nicht natürlichen Zahl "float" zugeordnet“?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Das ist die ganze Fehlermeldung die ich bekomme:__blackjack__ hat geschrieben: ↑Dienstag 6. November 2018, 12:08 @n00b@r00t: Du bekommst ja nicht nur diese eine Zeile sondern einen Traceback. An dem kannst Du die Stelle finden wo das Problem in Deinem Code seinen Ursprung hat.
Was bedeutet „ich habe aber jeder nicht natürlichen Zahl "float" zugeordnet“?
Und das meine ich damit:
Ich bekomme leider nirgendwo angezeigt wo der Fehler genau liegt (offensichtlich in der bitmex_bot, aber wo genau...)
Das ist augenscheinlich nicht dein Code, sondern etwas, das du irgendwoher hast. Und da faengt einer die Fehlermeldung ab, und gibt nur wenig hilfreiche Teile aus. Die Stelle im Code musst du finden, und dort einfach die Fehlerbehandlung veraendern. Wer schreibt denn den Bitmex-Bot? Frag den doch?
- __blackjack__
- User
- Beiträge: 13103
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@n00b@r00t: Du hast also die ganze Zahl 0 und machst daraus in voller Absicht mit `float()` eine Gleitkommazahl. Warum machst Du das wenn Du doch weisst das man die dann nicht als Index in eine Liste verwenden kann? Das macht keinen Sinn. Genau wie das addieren einer 0 nicht wirklich Sinn macht.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Weil ich ein Noob bin__blackjack__ hat geschrieben: ↑Dienstag 6. November 2018, 12:54 @n00b@r00t: Du hast also die ganze Zahl 0 und machst daraus in voller Absicht mit `float()` eine Gleitkommazahl. Warum machst Du das wenn Du doch weisst das man die dann nicht als Index in eine Liste verwenden kann? Das macht keinen Sinn. Genau wie das addieren einer 0 nicht wirklich Sinn macht.
Was muss ich also tun? Ich brauche diese Bruchzahlen.
Ja der Code ist nicht von mir und ziemlich lang.
@n00b@r00t: ohne zu wissen, was Du eigentlich machen willst, kann man schlecht Code, den man nicht kennt, korrigieren. Ohne dass Du anfängst Python zu lernen, werden Dir die Hilfestellungen, die wir Dir geben können, aber auch nicht weit bringen.
- __blackjack__
- User
- Beiträge: 13103
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@n00b@r00t: Du hast da keine Bruchzahl sondern einfach eine 0 bzw. durch das `float()` eine 0.0. Und wenn Du einen Dezimalbruch hättest, kannst Du sie nicht als Index in eine Liste verwenden. Wie sollte das denn überhaupt gehen mit einem Dezimalbruch als Index? Was sollte das denn Deiner Meinung nach bedeuten?
Arbeite am besten erst einmal das Tutorial in der Python-Dokumentation durch. Und dann beschreib mal Dein Problem, und nicht die Probleme die Du bei dem Code hast, von dem Du glaubst es wäre eine Lösung für Dein Problem. Bitte nicht als Bilder, sondern als Quelltext. Auch Textfehlermeldungen sind besser als Text zu lesen.
Arbeite am besten erst einmal das Tutorial in der Python-Dokumentation durch. Und dann beschreib mal Dein Problem, und nicht die Probleme die Du bei dem Code hast, von dem Du glaubst es wäre eine Lösung für Dein Problem. Bitte nicht als Bilder, sondern als Quelltext. Auch Textfehlermeldungen sind besser als Text zu lesen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Es geht hier darum Orders per Api an eine Börse zu senden. Offenbar ist hier nur vorgesehen auf ganzen Beträgen zu handeln (100, 101, 102...) ich möchte aber auch auf den Centbeträgen handeln (100, 100.05, 100.10...).
- __blackjack__
- User
- Beiträge: 13103
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Warum wird ein Betrag als Index in eine Liste verwendet?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
das weiss ich nicht, sinn des skripts ist es mehrere Orders mit verschiedenen Preisen zu generieren (aktueller Preis +1, +2, +3...) ich möchte aber +0.5, +1, +1,5...__blackjack__ hat geschrieben: ↑Dienstag 6. November 2018, 16:13 Warum wird ein Betrag als Index in eine Liste verwendet?
Dann stell einen Issue in dem dazugehoerigen github-Repository ein. Dann kann der Autor dir das als Feature bauen. Kannst ihm ja Bitcoin dafuer versprechen. Es ist durchaus einiges an Arbeit, sich mit diesem Code auseinander zu setzen, und ihm neue Tricks beizubringen. Da musst du halt Python fuer koennen.
- __blackjack__
- User
- Beiträge: 13103
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@n00b@r00t: Wenn Du das nicht weisst, solltest Du das vielleicht herausfinden.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
liste[zahl_die_eine_ganzzahl_sein_sollte_aber_es_nicht_ist].
Das Problem ist, dass die betreffende Codestelle so nicht auffindbar ist. Dazu muss man
- die software zum laufen bringen (hast du. wir nicht).
- die stelle finden, an der das logging des fehlers stattfindet, und dieses logging entfernen, und stattdessen den vollen Fehler bekommen.
Dann siehst du, wo genau das passiert.
Das Problem ist, dass die betreffende Codestelle so nicht auffindbar ist. Dazu muss man
- die software zum laufen bringen (hast du. wir nicht).
- die stelle finden, an der das logging des fehlers stattfindet, und dieses logging entfernen, und stattdessen den vollen Fehler bekommen.
Dann siehst du, wo genau das passiert.
ok, ich habe hier mal die Schlüsselstellen rausgesucht
Das ist wohl soweit alles wo dieser Index erwähnt ist, wie kann ich das jetzt abändern, damit ich da Brüche verwenden kann?
Code: Alles auswählen
def get_price_offset(self, index):
start_position = self.current_bid_price
return start_position + index
.....
def prepare_order(self, index):
"""Create an order object."""
quantity = 100
price = self.get_price_offset(index)
return {'price': price, 'orderQty': quantity, 'side': "Buy" if index < 0 else "Sell"}
Die Stelle, die Du hier zeigst, hat nirgends eine Einschränkung, ob man da nun Brüche (Dezimal) oder Fließkommazahlen verwendet. Wie schon geschrieben, Du mußt die Stelle des Fehlers finden, und von dort aus Rückwärts suchen, wo ein "falscher" Wert eingesteuert wird.