Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  algaja pythoni probleem märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale. Teata moderaatorile
otsing:  
estplayer
HV kasutaja

liitunud: 15.10.2008




sõnum 04.11.2012 22:01:58 algaja pythoni probleem vasta tsitaadiga

Tere!
Kirjutan Pythonis funktsiooni, mis võtab 2 stringi ja tagastab ühe stringi, mis on on justkui need 2 stringi omavahel "kokku seotud"
Näiteks on stringid "abc" ja "def" ning vastus on siis "adbecf"
Loodan, et saite mu mõttest aru, õpin ise Pythonit inglise keeles ja pole harjunud ennast niimoodi eesti keeles väljendama.

def laceStrings(s1, s2):
    s3 = ""
    if s1 == "" and s2 == "":
        return ""
    if s1 == "" and s2 != "":
        return s2
    if s1 != "" and s2 == "":
        return s1
    for i in s1:
        for j in s2:
            s3 += i + j
    return s3

Ma saan siin aru milles mul viga tuleb, need nested for loopid ei sobi vist selle ülesande jaoks, aga ma ei oska seda kuidagi muud moodi teha. Oleks tore, kui annaksite veidike vihjed või pseudokoodi, et kuidas seda õigesti teha.
Aitäh
Kommentaarid: 29 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 26
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 04.11.2012 22:39:20 vasta tsitaadiga

No tegelikult poleks ju üldse vaja kontrollida, kas sisendid on tühjad. Kui sa liidad mingile stringile tühja stringi, siis jääbki alles ainult see string

s1 = "abc"
s2 = "sde"
s3 = ""
s3 = s1 + s2

Kui mõlemad tühjad siis tagastatakse tühi string, kui üks tühi, tagastatakse teine.

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
troglodyte
Kreisi kasutaja
troglodyte

liitunud: 09.08.2002




sõnum 04.11.2012 22:42:58 vasta tsitaadiga

Mis peaks olema funktsiooni tulemus juhul, kui stringid on eri pikkusega? Näiteks s1 = "abc" ja s2 = "defgh"?
Lihtsaim lahendus, eeldades et need stringid on alati ühe pikkused, oleks kasutada üht for-tsükklit kus sees liidad kokku stringide s1 ja s2 elemendid indeksiga i = 0 .. len(s1)
python:
  1. s3 = ""
  2. for i in xrange(len(s1)):
  3.   s3 += s1[i] + s2[i]

Kui stringid võivad eri pikkusega olla siis pead natuke juurde nuputama.

Ise lahendaksin selle probleemi kasutades zip või itertools.izip_longest ja reduce, operator.add, str.join funktsioone.

Mis õpetust sa kasutad õppimiseks?
NB! Pythonis kontrollitakse seda kas string on tühi ("") kasutades lihtsalt selle stringi tõeväärtust. Ehk siis if s1 == "" asemel kirjutatakse lihtsalt if not s1

_________________
ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn
Kommentaarid: 33 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 33
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
estplayer
HV kasutaja

liitunud: 15.10.2008




sõnum 04.11.2012 23:49:23 vasta tsitaadiga

Tänud teile, lahendasin ära, pannes mõned if-laused juurde. Muidu õpin www.edx.org MITx 6.00x Introduction to Computer Science and Programming.
Kommentaarid: 29 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 26
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  algaja pythoni probleem
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.