Re: [python-romania] Ajutor python.

111 views
Skip to first unread message

Peter Damoc

unread,
Feb 8, 2013, 6:55:44 AM2/8/13
to python-...@googlegroups.com
Uite codul tau reinterpretat de mine:

http://pastebin.com/HcKP2747

ce am schimbat:

- in primul rand fii explicit cu ce vrei sa faci, explicit in numele pe care il dai variabilelor. Daca-ti formezi de la inceput obiceiul acesta te va ajuta ENORM de mult. Deci... am inlocuit my_dict cu food_info
- pentru teste, raw_input e ok DAR, e mult mai comod sa folosesti input-uri pe care le cunosti.
- cand verifici daca un text este in dictionary.keys() poti sa folosesti sintagma "text in dict" faptul ca verifici daca este in chei se subintelege.
- despacheteaza informatia intr-o maniera usor de inteles. "protein, carbs, fat = food_info[food]" este mult mai clar si mai usor de inteles decat sa folosesti codificare la index. Este mai usor de inteles de alte persoane si, cel mai important, este mai usor de inteles de tine la cateva luni dupa ce ai scris codul.
- am folosit un dictionar in care sa acumulez cantitatile si am folosit forma dict.get(key, default_value) pentru a evita eroarea de key not found. Alternativ poti initializa manual dictionarul cu 0 si sa folosesti forma dict[key]. 
- foloseste string formating in loc de compozitie. E un pas suplimentar... dar iti poate face codul mult mai usor de inteles.

Daca ai vreo neclaritate, intreaba.

Forta sa fie cu tine!
Petre



2013/2/7 Bal Marius <baal....@gmail.com>
Salut, primiti si incepatori ?:) 

Vreau sa invat python / programare si am zis sa fac un mic proiect ca e mult mai motivant, un mic programel pe care l-as putea numi un calculator (zilnic) de nutrienti.

Codul e cat de cat ok dar nu stiu cum sa-l extind sa accepte  10 alimente de exemplu fara sa folosesc list slicing, ar fi prea aiurea sa scriu if food[1] and food[2] and food[3] s.a.

Nu vreau cod complet si doar o indrumare, idee si eventual daca nu ma descurc sa-mi aratati voi cum se face.


#!/usr/bin/python2


my_dict = {'chicken':( 40, 50, 10 ),
            'pork':( 50, 30, 20 )
            
            }


food = raw_input("Enter your food: ").split(',')
if food[0] and food[1] in my_dict.keys():
    n_values= list(my_dict.get(food[0]) + my_dict.get(food[1]))
    print "You ate: " + str(n_values[0]+n_values[3]) + " protein, " +str(n_values[1]+n_values[4]) + " carbs and " + str(n_values[2]+n_values[5]) + " fat."
        


Mersi mult. 

--
Aţi primit acest mesaj deoarece sunteţi abonat(ă) la grupul „Python Romania” din Grupuri Google.
 
Pentru a vă dezabona de la grup şi pentru a nu mai primi e-mailuri de la acesta, trimiteţi un e-mail la adresa python-romani...@googlegroups.com.
Pentru mai multe opţiuni, accesaţi https://groups.google.com/groups/opt_out.
 
 



--
There is NO FATE, we are the creators.
blog: http://damoc.ro/

Bal Marius

unread,
Feb 8, 2013, 7:55:10 AM2/8/13
to python-...@googlegroups.com


2013/2/8 Peter Damoc <pda...@gmail.com>

Mersi mult pentru sfaturi / cod dar nu prea inteleg ce face aceasta linie " consumed["protein"] = consumed.get("protein", 0) +protein" acel + protein mai exact. 

Intre timp am incercat sa implementez acest cod si in php. http://pastebin.com/k4QNLx95


Peter Damoc

unread,
Feb 8, 2013, 3:36:52 PM2/8/13
to python-...@googlegroups.com
consumed.get('protein', 0) + protein

S-ar traduce cam asa: cauta in dictionarul consumed cheia 'protein', daca exista, adu-mi valoarea pe care o are, daca nu exista, intoarce 0.
La valoarea intoarsa se adauga valoarea incarcata mai devreme in protein.

Acum realizez ca am folosit 'protein' si ca nume de variabila si ca nume de cheie. Si mai explicit era:

        proteinValue, carbsValue, fatValue = food_info[food]
        consumed["protein"] = consumed.get("protein", 0) +proteinValue

E mai clar acum?



2013/2/8 Bal Marius <baal....@gmail.com>

Bal Marius

unread,
Feb 10, 2013, 5:15:19 AM2/10/13
to python-...@googlegroups.com


2013/2/8 Peter Damoc <pda...@gmail.com>
 Mersi mult acum am prins ideea.
Reply all
Reply to author
Forward
0 new messages