Pereiti prie turinio

PYTHON naujoko klausimas


Rekomenduojami pranešimai

Last login: Sat Feb 18 20:07:16 on ttys000
MacBook-Pro-:~ ololo$ python /Users/ololo/index.py 
Koks tavo vardas?:Trololo
Labas Trololo
Kiek tau metu?:5
Kelinti dabar metai?:6
trololo 1

 

x = raw_input("Koks tavo vardas?:")
print "Labas " + x
y = int(raw_input ("Kiek tau metu?:"))
a = int(raw_input ("Kelinti dabar metai?:"))
print "trololo", a-y

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Last login: Sat Feb 18 20:07:16 on ttys000
MacBook-Pro-:~ ololo$ python /Users/ololo/index.py 
Koks tavo vardas?:Trololo
Labas Trololo
Kiek tau metu?:5
Kelinti dabar metai?:6
trololo 1

 

x = raw_input("Koks tavo vardas?:")
print "Labas " + x
y = int(raw_input ("Kiek tau metu?:"))
a = int(raw_input ("Kelinti dabar metai?:"))
print "trololo", a-y

Sugalvojau padaryti paprasciau:

 

 

x = raw_input("Koks tavo vardas?:")

print "Labas " + x

y = int(raw_input("Kiek tau metu?:"))

b =2012-y

print "Tu gimei",b

raw_input("spausk ENTER")

 

 

 

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O tau žmogau iš ėmęs reikia pradėti mokytis nuo paskalio. Ir taip pat mokintis naudotis google, nes tau paprasčiausiai reikėjo užgooglinti python print fuction-pirma nuoroda i pythono docus

 

Old: print "The answer is", 2*2
New: print("The answer is", 2*2)

Old: print x,           # Trailing comma suppresses newline
New: print(x, end=" ")  # Appends a space instead of a newline

Old: print              # Prints a newline
New: print()            # You must call the function!

Old: print >>sys.stderr, "fatal error"
New: print("fatal error", file=sys.stderr)

Old: print (x, y)       # prints repr((x, y))
New: print((x, y))      # Not the same as print(x, y)!

 

O jai vis dėl to ne, tada iš savo patirtie siūlau ne skaityti jokių knygų, o lįsti tiesiai į oficialius funkcijų docus, šio atvejų http://docs.python.org/release/3.0.1/index.html ir turėti kažkokį tikslą, pavyzdžiu parašyti komentavimo formą

 

Sugalvojau padaryti paprasciau:

 

 

x = raw_input("Koks tavo vardas?:")

print "Labas " + x

y = int(raw_input("Kiek tau metu?:"))

b =2012-y

print "Tu gimei",b

raw_input("spausk ENTER")

 

Čia jau galima sugalvoti tūkstančius skirtingu variantu, pvž

 

import datetime

data = datetime.datetime.now()

x = raw_input("Koks tavo vardas?:")
print "Labas " + x
y = int(raw_input ("Kiek tau metu?:"))
print "trololo", data.year-y

Redagavo apieviska
Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 1 mėnesio...

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

 

Find the sum of all the multiples of 3 or 5 below 1000.

 

 

 

 

Padarau iki čia:

 # Programa kuri suras skaiciu kas tris ir penkis suma iki 1000

a=range(0,1001,3)
b=range(0,1001,5)

print a+b



 

 

 

Bet man sudeda kaip tekstą. Su int() man nesigauna. Kaip padaryti kitaip?

Redagavo Dekis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ne geriau būtų susikurti savo funkciją, kuri su while ciklu eina iki 1000 ir tikrina ar kuris nors skaičius dalinasi iš 3 arba iš 5? Pavyzdžiui:

 

http://pastebin.lt/1237/ įdėjau čia, nes per uždarbį kodas išsikraipo.

 

Na maždaug taip atrodytų. :)

 

P.S - Jei nenaudosi tokių build-in funkcijų, kaip range(), tai daugiau suprasi kaip kas veikia. Aišku, kam išradinėti dviratį.

Redagavo FaitasS
Nuoroda į pranešimą
Dalintis kituose puslapiuose

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

 

Find the sum of all the multiples of 3 or 5 below 1000.

 

 

 

 

Padarau iki čia:

 # Programa kuri suras skaiciu kas tris ir penkis suma iki 1000

a=range(0,1001,3)
b=range(0,1001,5)

print a+b



 

 

 

Bet man sudeda kaip tekstą. Su int() man nesigauna. Kaip padaryti kitaip?

Ne kaip tekstą, o sudedi du sąrašus, dėl ko rezultatas būna trečias sąrašas. Ar perėjai visą Dive into Python? Jei ne, tai kiek?

 

Tavo uždaviniui tiktų faito sprendimas, tik indentacija ten truputį sugadinta. O tavo būdui reiktų for ciklo.

 

Edit: Nusišnekėjau dėl to range. Žodžiu, arba range(0,1000,3) ir nuimi pirmą elementą (0), arba išvis ne su range daryti.

 

Žodžiu, kaip sakiau, gaunasi abiejų sąrašų sujungimas. O tau reikia pereiti per kiekvieną jų narį ir sudėti juos visus :)

Redagavo Silke
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ne kaip tekstą, o sudedi du sąrašus, dėl ko rezultatas būna trečias sąrašas. Ar perėjai visą Dive into Python? Jei ne, tai kiek?

 

Tavo uždaviniui tiktų faito sprendimas, tik indentacija ten truputį sugadinta. O tavo būdui reiktų for ciklo. Ir beje, 1000 neturi įeiti (below 1000), tai antras range argumentas turėtų būti 1000.

 

Prasilenkėm :) Pabandžiau pats pasileisti programą, tai neveikė, ištaisiau ir kol redagavau parašei

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ar perėjai visą Dive into Python? Jei ne, tai kiek?

 

 

 

 

Dive into python net nepradėjau skaityti. Bet perskaičiau Learn Python in hard way ir dabar skaitau http://docs.python.o...ial/index.html. Jau perskaičiau 5 skyrius

 

 

 

Redagavo Dekis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dive into python net nepradėjau skaityti. Bet perskaičiau Learn Python in hard way ir dabar skaitau http://docs.python.o...ial/index.html. Jau perskaičiau 5 skyrius

Kažką sumaišiau gal tada. Kaip sekėsi su LPTHW? Nes ne vien perskaityti reikia, bet ir labiau patyrinėti, kad suprastum, kaip kas veikia - tas „hard way“ už tave to nepadarys :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kažką sumaišiau gal tada. Kaip sekėsi su LPTHW? Nes ne vien perskaityti reikia, bet ir labiau patyrinėti, kad suprastum, kaip kas veikia - tas „hard way" už tave to nepadarys :)

Kaip tik dabar LPTHW mokymu ir naudojuosi :)

 

 

Dabar parašiau programą

 


n=0

for i in range(0,1000):
   if i%3 and i%5:
       n=n+i

print n


 

Bet gaunu tokią žinutę:

 

Sorry, but the answer you gave appears to be incorrect.

 

Ką aš padariau blogai?

 

 

 

 

 

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kaip tik dabar LPTHW mokymu ir naudojuosi :)

 

 

Dabar parašiau programą

 


n=0

for i in range(0,1000):
   if i%3 and i%5:
       n=n+i

print n


 

Bet gaunu tokią žinutę:

 

Sorry, but the answer you gave appears to be incorrect.

 

Ką aš padariau blogai?

 

 

 

 

 

 

AND ir OR raktažodžiai skriasi :) Įsiskaityk į sąlygą geriau.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Neišvėriau ir atsakyma radau internete:

 


n = 0
for i in xrange(1,1000):
	if not i % 5 or not i % 3:
      	n = n + i

print n

 

Gal man kas nors galėtų paaiškinti kaip veikia "if not"?

 

PS. Atsakymo ieškojau internete, nes and pakeitus į or teisingo atsakymo negavau

Redagavo Dekis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Neišvėriau ir atsakyma radau internete:

 

Not yra loginio neigimo sakinys, t.y.:

>>> not True
False
>>> not False
True

Boolean reikšmę paverčia priešinga. Pythone, bet koks skaičius išskyrus 0 yra True, o 0 - False. Taigi

>>> not 0
True
>>> not 1
False

Ir t.t.

 

Taigi, dalindamas tarkime 3 % 3 gauni nulį, kas yra False, su not jį paverčia True. Jei gausi pvz. 1, tai su not jis pavirs į False ir if'o nevykdys. :)

 

Na aš ir žioplas, tik rašydamas šitą supratau, kodėl tavo variantas neveikė

if i%3 or i%5:

Tarkime ima skaičių 2, šitas sakinys virsta tokiu:

if 2%3 or 2%5

Iš ko gaunasi

if 2 or 5

O šie abu skaičiai yra True. Taigi, gauni visiškai ne tuos skaičius, kurių tau reikia, o būtent tuos, kurių tau nereikia :)

 

Tavo variante turėjo būti

if i%3 == 0 or i%5 == 0

ir tada viskas veiktų.

 

Visada, kai tokio dalyko bug'ą sprendi, pabandyk įsistatyti atskirų reiškinių reikšmes į salygą ir ištestuoti jas, kaip aš padariau kiek aukščiau.

 

Beje, jei jau Project Euler sprendi, tai 6 užduotis nebloga - pabandyk padaryti ją. Be google :)

Redagavo Silke
Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 2 savaičių...

Reikia pagalbos. Programa turi suskaiciuoti kiek turesi pinigu po to, kai gausi investicine graza per n metu. Pavyko parasyti tiek, bet atsakymai neteisingi, jau 2 valandas knisuos, bet vis neiseina.

 

 

 



print "Programa kuri apskaiciuoja kiek turesi pinigu po to , kai gausi investicines grazos per n metu"
a=int(raw_input("Kiek  pinigu investuosi:"))
b=int(raw_input("Kokia metine graza?:"))
c=int(raw_input("Kokiam laikotarpiui investuoji (metais)?:"))
m=0
while m<c:
   x=(a/100)*b #gaunam metine graza
   a=a+x # sudedam esamus pinigus su graza
   m=m+1

print a

Redagavo Dekis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Reikia pagalbos. Programa turi suskaiciuoti kiek turesi pinigu po to, kai gausi investicine graza per n metu. Pavyko parasyti tiek, bet atsakymai neteisingi, jau 2 valandas knisuos, bet vis neiseina.

 

 

 



print "Programa kuri apskaiciuoja kiek turesi pinigu po to , kai gausi investicines grazos per n metu"
a=int(raw_input("Kiek  pinigu investuosi:"))
b=int(raw_input("Kokia metine graza?:"))
c=int(raw_input("Kokiam laikotarpiui investuoji (metais)?:"))
m=0
while m<c:
   x=(a/100)*b #gaunam metine graza
   a=a+x # sudedam esamus pinigus su graza
   m=m+1

print a

 

Jeigu naudoji python2.7, tai a / 100 išveda tik sveiką dalį (10 / 100 = 0). Turėtum naudoti a / 100.0

 

O štai veikiantis sprendimas:

suma = 1000
palukanos = 10
metai = 3

galutine_suma = suma * (1 + palukanos / 100.) ** metai
print galutine_suma
~                                            

Redagavo aemdy
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jeigu naudoji python2.7, tai a / 100 išveda tik sveiką dalį (10 / 100 = 0). Turėtum naudoti a / 100.0

 

O štai veikiantis sprendimas:

suma = 1000
palukanos = 10
metai = 3

galutine_suma = suma * (1 + palukanos / 100.) ** metai
print galutine_suma
~                                            

Šiaip jau čia tips'as, tinkantis beveik kiekvienai programavimo kalbai, ar bent toms, kuriuose int skiriasi nuo float - jei dalini sveikus skaičius, tai ir atgal gausi sveiką skaičių (kaip dalijant kampu). Tas pats galioja pvz. C, ruby:

irb(main):003:0> 10/20
=> 0

Bet vat Javascript int ir float suplakti į vieną Number tipą, todėl:

> 10/20
0.5

 

Interaktyvios konsolės tokiais atvejais - nuostabūs įrankiai, įvedi ir matai iškart rezultatą :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 2 savaičių...

Dilema python 2.7 ar 3?

 

Dabar jau truputi pramokau 2.7, bet išgirdau daug nuominių, kad dabar visi pereina ant 3 ir, kad 2.7 neverta mokintis, nes gerokai skiriasi. Ar tai tiesa, kad 2.7 ir 3 gerokai skiriasi sintakse?

 

Kokia jūsų nuomone apie 2.7 ir 3.

 

 

Nuoroda į pranešimą
Dalintis kituose puslapiuose

2.7

 

Jei manai ,kad pramokai, tai prašom:

http://www.pythonchallenge.com

Sėkmės ir siūlau nesukčiauti, nes tik save apgaudinėsi :)

 

Tikriausiai netaip supratai "pramokau". Aš suprantu sintaksę, sprendžiu pyschools. Manau save, kaip turintį pagrindus galiu vadinti.

 

 

 

 

 

O dabar į temą, kodėl 2.7, gali argumentuoti?

Redagavo Dekis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

 

O dabar į temą, kodėl 2.7, gali argumentuoti?

Po truputį yra migruojama į 3.x, vis daugiau projektų prie to pereina, tačiau vis tiek dar ne visi - jei norėsi kažką realaus sukurti, tai greičiausiai vis tiek atsiras kažkoks modulis, kurį rasi tik antram pythonui. O pačiam kai ateis laikas pereiti prie 3 nebus per daug sunku, jei neturėsi kokio savo milžiniško projekto. Na, arba gali nors ir abu vieną šalia kito mokytis, jei nesimaišys.

Redagavo Silke
Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 5 savaičių...

Dabar po truputi judu į priekį projecteuler uždavinių sprendime. Žinoma, kai kurie uždaviniai man dar yra gerokai per sunkūs ir aš juos papraščiausiai praleidžiu. Bet kai kuriuos aš perprantu ir juos spręsdamas stengiuosi panaudoti savo turimas žinias. Bet štai iškilo vienas neaiškumas. Turiu tokią salygą.

 

Aš šį uždavinį parašiau taip:

 


from math import pow
y=0
suma=0
for x in range(1,1001):
   y=y+1
   laipsnis=pow(x,y)
   suma=suma+laipsnis

str(suma)
print suma[-10:0]


 

Nežinau ar čia kodas blogas ar sąlygą ne taip supratau, bet gaynu tok error:

 

OverflowError: math range error

 

Gal galit padėt ir parodyt kur aš suklydau?

Redagavo Dekis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dabar po truputi judu į priekį projecteuler uždavinių sprendime. Žinoma, kai kurie uždaviniai man dar yra gerokai per sunkūs ir aš juos papraščiausiai praleidžiu. Bet kai kuriuos aš perprantu ir juos spręsdamas stengiuosi panaudoti savo turimas žinias. Bet štai iškilo vienas neaiškumas. Turiu tokią salygą.

 

Aš šį uždavinį parašiau taip:

 

Nežinau ar čia kodas blogas ar sąlygą ne taip supratau, bet gaynu tok error:

 

OverflowError: math range error

 

Gal galit padėt ir parodyt kur aš suklydau?

Pats, sakykim, nesuklydai nieko, čia Python tokie spąstai. pow() funkcija implementuota C kalboje, kas reiškia, kad skaičių ruožas yra kažkiek ribotas ir tu jį peržengi su ypač dideliais skaičiais. Vietoj to naudok ** operatorių:

>>>pow(2,16) == 2**16
True

 

Tiesa, dar nesupratau šito tavo kodo gabalėlio.

print suma[-10,0]

lyg ir neteisinga sintaksė.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pats, sakykim, nesuklydai nieko, čia Python tokie spąstai. pow() funkcija implementuota C kalboje, kas reiškia, kad skaičių ruožas yra kažkiek ribotas ir tu jį peržengi su ypač dideliais skaičiais. Vietoj to naudok ** operatorių:

>>>pow(2,16) == 2**16
True

 

Tiesa, dar nesupratau šito tavo kodo gabalėlio.

print suma[-10,0]

lyg ir neteisinga sintaksė.

 

Dėkui už atsakymą. Taip dabar ir pats pastebėjau, kad neteisinga. O kaip kitaip man gauti paskutinius 10 skaičių?

 

 

 

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...