Forum » Programiranje » Coursera naloga (python)
Coursera naloga (python)
levaky ::
Pozdravljeni!
Na Courseri delam tečaj Pythona in me ena naloga z zankami heca. Zdi se mi, da bi morala stvar normalno delovati, a se rezultati ne skladajo z pričakovanju:)
Koda:
Ko vpišem vrednosti 1,2,3,4,5,6,7 po vrsti, zadeva špila.
Če vpišem 1,50,500,55, mi do 500 lepo sledi, z vpisom 55 mi pa le-to določi kot largest.
Če vpišem 1,5,9,10,50, se mi largest ustavi pri 9. Za vrednosti 10 in 50 pa mi skoči v 'else' pogoj...
Česa ne vidim?
Mogoče samo usmeritev v pravo smer, da vem kje ga pečem:)
Matej
Na Courseri delam tečaj Pythona in me ena naloga z zankami heca. Zdi se mi, da bi morala stvar normalno delovati, a se rezultati ne skladajo z pričakovanju:)
Koda:
largest = None smallest = None while True: num = raw_input("Enter a number: ") # if user enters done, exit loop if num == "done" : break # check if input is a number try: float(num) except: print "Invalid input" continue # set 1st entered value as largest and smallest if largest is None: largest=num if smallest is None: smallest=num # check if entered number is the smallest or largest if num > largest: largest = num elif num < smallest: smallest = num else: print "Ni ne eno, ne drugo" print "Largest: ", largest, "| Smallest: ", smallest, "| Num: ", num print "Maximum", largest print "Minimum", smallest
Ko vpišem vrednosti 1,2,3,4,5,6,7 po vrsti, zadeva špila.
Če vpišem 1,50,500,55, mi do 500 lepo sledi, z vpisom 55 mi pa le-to določi kot largest.
Če vpišem 1,5,9,10,50, se mi largest ustavi pri 9. Za vrednosti 10 in 50 pa mi skoči v 'else' pogoj...
Česa ne vidim?
Mogoče samo usmeritev v pravo smer, da vem kje ga pečem:)
Matej
AndrejO ::
Dobrodošel v čudoviti svet jezikov, ki ne poznajo tipov.
V nogo si se ustrelil, ker si primerjal niz "55" z nizom "500" in ne številko 55 s številko 500.
V nogo si se ustrelil, ker si primerjal niz "55" z nizom "500" in ne številko 55 s številko 500.
levaky ::
Ok, rešil nalogo. Hvala za idejo. Nisem vedel, da avtomatsko zadevo vzame kot string.
popravil na
Zaenkrat deluje:)
Matej
# check if input is a number try: float(num) except: print "Invalid input" continue
popravil na
# check if input is a number try: num=int(num) except: print "Invalid input" continue
Zaenkrat deluje:)
Matej
levaky ::
Še tole:
Zakaj tukaj zadeva v prvem koraku noče skočiti v prvo zanko?
Glede na to, da na začetku programa definiram vrednosti za largest in smallest kot None, sta v prvem koraku brez vrednosti oz "None" in je pogoj izpolnjen...
Matej
if largest and smallest is None: largest = num smallest = num elif num > largest: largest = num elif num < smallest: smallest = num
Zakaj tukaj zadeva v prvem koraku noče skočiti v prvo zanko?
Glede na to, da na začetku programa definiram vrednosti za largest in smallest kot None, sta v prvem koraku brez vrednosti oz "None" in je pogoj izpolnjen...
Matej
Randomness ::
Pogoj imaš čudno napisan. Verjetno si mislil nekaj takega:
if largest is None and smallest is None
levaky ::
Randomness je izjavil:
Pogoj imaš čudno napisan. Verjetno si mislil nekaj takega:
if largest is None and smallest is None
To bo to:)
Vsak dan se kaj novega naučim:)
Prosim, ne se kregat:P
Matej
ragezor ::
rece se da je dinamicno tipiziran
drugace ko mas ti input program ne ve ali ti namenis vnesti not stevilke ali besede ali karkoli pac in zato moras sam poskrbeti, da se ti stringi pretvorijo v integerje.
Python 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> type(1) <type 'int'> >>> type("hello") <type 'str'> >>>
drugace ko mas ti input program ne ve ali ti namenis vnesti not stevilke ali besede ali karkoli pac in zato moras sam poskrbeti, da se ti stringi pretvorijo v integerje.
levaky ::
Še ena težavica.
Imam seznam v seznamu imenovan 'matrix'. V test_array bi rad spravil posamezne stolpce in jih potem posredoval naprej funkciji.
Zgornji primer ne deluje, saj mi napako:
Zakaj je index out of range? To javi v drugem koraku, ko bi index moral biti 1.
Ali definicija 'test_array = ['']' pomeni, da bo seznam držal samo eno vrednost?
Kako lahko definiram seznam, ampak ne določim velikosti?
Sem probal pognati tudi zadevo brez definicije test_array, ampak potem pa pravi:
Matej
matrix = [[1,2,3,4], [2,3,1,4], [4,1,2,3], [3,4,1,2]] matrix_size = len(matrix)-1 test_array = [''] for g in xrange(0, matrix_size): for h in xrange(0, matrix_size): test_array[h] = matrix[h][g] print test_array
Imam seznam v seznamu imenovan 'matrix'. V test_array bi rad spravil posamezne stolpce in jih potem posredoval naprej funkciji.
Zgornji primer ne deluje, saj mi napako:
IndexError: list assignment index out of range
Zakaj je index out of range? To javi v drugem koraku, ko bi index moral biti 1.
Ali definicija 'test_array = ['']' pomeni, da bo seznam držal samo eno vrednost?
Kako lahko definiram seznam, ampak ne določim velikosti?
Sem probal pognati tudi zadevo brez definicije test_array, ampak potem pa pravi:
NameError: name 'test_array' is not defined
Matej
Gandalfar ::
Ja, arrayu appendas, ker ti hoces v prazen array na n-ti element napisat nekaj kar pythonu ni najbolj vsec.
levaky ::
Gandalfar: ja, sem potem dojel... .append() ali .extend(), odvisno od tega, kaj hočem doseči.
Verjetno bi se pa dalo tudi definirati array kot test_array[4] = [] in potem vstavljati na željena mesta kot test_array[2] = '2'?
Matej
Verjetno bi se pa dalo tudi definirati array kot test_array[4] = [] in potem vstavljati na željena mesta kot test_array[2] = '2'?
Matej
Isotropic ::
mislim, da se ga ne da definirati na tak nacin, bos moral narediti:
test_array = [i for i in xrange(4)]
test_array = [i for i in xrange(4)]
Isotropic ::
ja
sam tam bi pravzaprav rabil imeti 4x4 matrix, kako se pa to naredi v list comprehension, sem pa ze pozabil malo.
mogoce l = [4*[None] for i in xrange(4)]
nisem pa zih
sam tam bi pravzaprav rabil imeti 4x4 matrix, kako se pa to naredi v list comprehension, sem pa ze pozabil malo.
mogoce l = [4*[None] for i in xrange(4)]
nisem pa zih
jype ::
Isotropic> test_array = [i for i in xrange(4)]
Tole se veliko lepše zapiše kot
test_array = range(4)
Isotropic> sam tam bi pravzaprav rabil imeti 4x4 matrix, kako se pa to naredi v list comprehension, sem pa ze pozabil malo.
Če delaš z matrikami, še posebej če z velikimi, potem verjetno hočeš za tako delo uporabljati knjižnice:
http://docs.scipy.org/doc/numpy/referen...
Tole se veliko lepše zapiše kot
test_array = range(4)
Isotropic> sam tam bi pravzaprav rabil imeti 4x4 matrix, kako se pa to naredi v list comprehension, sem pa ze pozabil malo.
Če delaš z matrikami, še posebej če z velikimi, potem verjetno hočeš za tako delo uporabljati knjižnice:
http://docs.scipy.org/doc/numpy/referen...
Zgodovina sprememb…
- spremenilo: jype ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [python] project euler problemOddelek: Programiranje | 1283 (835) | Spura |
» | PythonOddelek: Programiranje | 3039 (1725) | d_DJ |
» | Naloga iz Putka - UPMOddelek: Programiranje | 2217 (1553) | NejcSSD |
» | Python iskanje podvojenih vrednostiOddelek: Programiranje | 1488 (1201) | BlueRunner |
» | python problemOddelek: Programiranje | 1460 (1200) | Isotropic |