Python 3.++ .format moet korter kunnen ?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Wouter144
  • Registratie: December 2017
  • Laatst online: 09-12-2017
Ben bezig met een ticker van een crypto coin met 8 cijfers achter de comma.
Probleem is opgelost, alleen denk ik dat het korter kan, maar krijg het zelf niet voor elkaar.

Gegevens komen uit een (volgens mij) dictionary
voorbeeld: {'success': True, 'result': {'Bid': 10952.0, 'Ask': 10974.0, 'Last': 10952.0}, 'message': ''}


ardr = my_bittrex.get_ticker('BTC-ARDR')
ardrresult = ardr['result']
ardrbid = ardrresult['Bid']
ardrbid = "{0:.8f}".format(ardrbid)


Hoeveel korter kan het, want heb er nogal wat van nodig , bid , ask , last voor meerdere (coins) producten.

Alvast dank.

Beste antwoord (via Wouter144 op 03-12-2017 13:16)


  • TommieW
  • Registratie: December 2010
  • Laatst online: 17:15

TommieW

Numa numa.

Sowieso gebruik je nu flink meer tussenvariabelen dan nodig is.

Python:
1
ardrbid = "{0:.8f}".format(my_bittrex.get_ticker('BTC-ARDR')['result']['Bid'])


(Zou je alsjeblieft [code] tags willen gebruiken voor code? Dat maakt het wat beter leesbaar.)

1700X@3,9GHZ - Asus Crosshair VI Hero - 32GB Corsair LPX - GTX 1070Ti
iPhone 13 Pro Max - Macbook Pro 16" M1 Pro

Alle reacties


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • TommieW
  • Registratie: December 2010
  • Laatst online: 17:15

TommieW

Numa numa.

Sowieso gebruik je nu flink meer tussenvariabelen dan nodig is.

Python:
1
ardrbid = "{0:.8f}".format(my_bittrex.get_ticker('BTC-ARDR')['result']['Bid'])


(Zou je alsjeblieft [code] tags willen gebruiken voor code? Dat maakt het wat beter leesbaar.)

1700X@3,9GHZ - Asus Crosshair VI Hero - 32GB Corsair LPX - GTX 1070Ti
iPhone 13 Pro Max - Macbook Pro 16" M1 Pro


Acties:
  • +1 Henk 'm!

  • Tk55
  • Registratie: April 2009
  • Niet online
De eerste vraag is: Waarom wil je het korter? Verhoogt het de leesbaarheid? Wordt het sneller?

Als je Python 3.6 gebruikt kun je fstrings toepassen:


Met fstrings doe je het volgende: Je zet de variabele in de curly brackets en voor de string zet je een f:
code:
1
f"{variabele}"


Met aantal decimalen:
code:
1
f"{variabele}:.8f"


Dat komt neer op het volgende:
code:
1
2
3
4
5
>>> a = 0.0123456789
>>> print("{0:.8f}".format(a))
0.01234568
>>> print(f"{a:.8f}")
0.01234568

Acties:
  • 0 Henk 'm!

  • Wouter144
  • Registratie: December 2017
  • Laatst online: 09-12-2017
Dat is snel.

Veel dank, ga het gelijk proberen.

Zal de code tags gebruiken volgende keer. (1e post)

Wilde het korter omdat : 1 Dacht dat het mogelijk was en wilde weten hoe. 2 minder regels, voor mij nog steeds te lezen, zeker met wat # verklarende tekst erbij .

Acties:
  • 0 Henk 'm!

  • Wouter144
  • Registratie: December 2017
  • Laatst online: 09-12-2017
Top werkt,

Heb nu dus Bid , Ask en Last uit die dictionary.

Als ik nu 3 verschillende regels ervoor maak , maakt het programma dan 3 calls naar de API , of krijgt het alle gegevens uit de dictonary van de 1e call?

of moet ik eerst result opvragen , waar de Bid, Ask en Last in zitten en dan 3 regels ervoor maken die de value's eruit halen.

wil namelijk de APi niet teveel calls p/sec geven
programma loopt in Tkinter, en na 5sec vraagt die weer nieuwe koersen aan.

Acties:
  • +1 Henk 'm!

  • Tk55
  • Registratie: April 2009
  • Niet online
@Wouter144

Je kan het beste de documentatie van de library erbij pakken. Maar het lijkt erop dat de functie:
code:
1
my_bittrex.get_ticker('BTC-ARDR')

een aanroep doet naar de API. Als je die dus meerdere keren uitvoert, zal hij (afhankelijk van of er gecached wordt, wat vaak niet het geval is), opnieuw de API aanroepen.

Je kunt dus het beste 1x het antwoord van de API opslaan en daarna de benodigde variabelen eruit halen.

Acties:
  • 0 Henk 'm!

  • Wouter144
  • Registratie: December 2017
  • Laatst online: 09-12-2017
Dank, ga er wat over zoeken, anders worden het veel API calls
Pagina: 1