Vinnaren i pepparkakshustävlingen!
2013-07-11, 16:38
  #25
Moderator
vhes avatar
Citat:
Ursprungligen postat av SvenTuba
kod som ser ut så här:
Kod:
if i = 0:
  print "kalle"
print "olle
skiljer sig markant från beteende av
Kod:
if i = 0:
print "kalle"
print "olle

Absolut. Den ena har ett SyntaxError endast på rad 1 men den andra även på rad 2.

Förlåt, kunde inte låta bli :-) Mycket bra inlägg, egentligen. Varje år dyker det upp ett gäng sommarprogrammerare (tror jag sett exakt den uppgiften åtminstone 10ggr här) som verkligen inte ger intryck av att ens försöka förstå uppgifterna de gör. I så fall bör de förklara hur de tänkt, och vad de kommit fram till för resultat (eller åtminstone delresultat). Utifrån det kan man hjälpa till och ge tips.

Att bara begära svar på läxövningar kommer (förhoppningsvis) aldrig mötas särskilt positivt här.
Citera
2013-07-12, 01:40
  #26
Medlem
Citat:
Ursprungligen postat av vhe
Absolut. Den ena har ett SyntaxError endast på rad 1 men den andra även på rad 2.

Förlåt, kunde inte låta bli :-) Mycket bra inlägg, egentligen. Varje år dyker det upp ett gäng sommarprogrammerare (tror jag sett exakt den uppgiften åtminstone 10ggr här) som verkligen inte ger intryck av att ens försöka förstå uppgifterna de gör. I så fall bör de förklara hur de tänkt, och vad de kommit fram till för resultat (eller åtminstone delresultat). Utifrån det kan man hjälpa till och ge tips.

Att bara begära svar på läxövningar kommer (förhoppningsvis) aldrig mötas särskilt positivt här.
Syntaxfel är lulllull. Och lappri. I ett sammanhang där jag vill, så klart, visa indenteringens betydelse. Men visst, det var klumpigt. Vilket i sin tur visar hur noga det är.
Det intressanta är att jag råkade ut för mystisk sak alldeles efter inlägget. Att man i den sista tuppeln först får felmeddelande var lite underligt, alltså i princip - orkar inte ändra Print till print...men skriva det här uppe orkar jag.
Kod:
for item in lista:
  Print ", ".join(item)
Det skulle vara en map mot stringtyp där på item, eller str. Men lite underligt att allt såg korrekt ut, till sista "raden" skulle skrivas ut då efter den med felutgång. Det, fattade jag inte.
Citera
2013-07-12, 01:42
  #27
Medlem
Visst ja! Nu ser jag... == ska det ju va, bland anknat...nå...
Tack för komplimangen förresten.
Citera
2013-07-12, 09:48
  #28
Moderator
vhes avatar
Citat:
Ursprungligen postat av SvenTuba
Det intressanta är att jag råkade ut för mystisk sak alldeles efter inlägget. Att man i den sista tuppeln först får felmeddelande var lite underligt, alltså i princip - orkar inte ändra Print till print...men skriva det här uppe orkar jag.
Kod:
for item in lista:
  Print ", ".join(item)
Det skulle vara en map mot stringtyp där på item, eller str. Men lite underligt att allt såg korrekt ut, till sista "raden" skulle skrivas ut då efter den med felutgång. Det, fattade jag inte.

Jag förstår faktiskt inte vad du säger. Är det där en fråga? Vad problemet med koden är? Alla element i alla sekvenser i lista måste vara strängar (eller unicode), är de inte det kommer du få ett fel.
Vad exakt är din data och din traceback?
Citera
2013-07-12, 14:10
  #29
Medlem
Citat:
Ursprungligen postat av vhe
Jag förstår faktiskt inte vad du säger. Är det där en fråga? Vad problemet med koden är? Alla element i alla sekvenser i lista måste vara strängar (eller unicode), är de inte det kommer du få ett fel.
Vad exakt är din data och din traceback?
Hej,
Nja. Det var ingen fråga.

Det är skillnad på tupel och lista. Lärde jag mig. Just. Ville bara liksom meddela det. Datat är strängar, som kommer från cx_Oracle och en searchall eller vad nu den prytteln heter, hur som helst så kommer det tillbaka som en lista, alltså [('asd','asda','asda'),('asda','asda','asda'),...] Jag hade lite trassel att få ut dessa utan Parenteserna.

Men det gick till slut. Och då var det så att man måste - det kan bero på cx_Oracle inser jag nu - göra

Kod:
 kalle = fetchall(någon sql-sats)
 data_list = list(kalle)
 for item in data_list:
    print ", ".join(map(str,item))
Detta gav en traceback, men inte förrän allt var klart. Men jag har nog fel. Det måste ju smälla på första inser jag nu. Hade ett gäng med print där ett tag för att få ut något...öht.
Kod:
 nisse = fetchall(någon sql-sats)
 for item in nisse:
    print ", ".join(item)

Aha. Tack! Ser nu att det var en None där - säkert NULL från databasen. Så det var inte det fel jag trodde. Vilket det aldrig är - nja, men nästan... :-) - se där. En lärdom till.

Tack.
Så koden ovan med nisse fungerar så att säga. Men om item är NULL (None i Python) går det inte bra.
Tack igen. Så det var inte fel att skriva som jag skrev först utan map.
Citera
2013-07-14, 19:32
  #30
Medlem
Hur tilldelar man elementet på platsen med index k i listan namn värdet 172?

Här har jag svårt att veta vad jag gör fel. Jag provar på som jag läst i teorin och skriver i detta fall.

namn[k] = "172"

Detta blir dock fel, har ni någon anning om vad jag har gjort för fel här?
Citera
2013-07-14, 19:53
  #31
Medlem
Citat:
Ursprungligen postat av SvenTuba
Kod:
k = 0 
while k < 31: 
namn[k] = input(”Ge ord: ”) 
k += 1

k = 0 
while k < 31: 
s1 = input(”Ge ord: ”) 
namn[k] = s1 
k += 1

k = 1 
while k < 31: 
namn[k] = input(”Ge ord: ”) 
k += 1

k = 0 
while k <= 31: 
namn[k] = input(”Ge ord: ”) 
k += 1

k = 0 
while k < 31: 
namn[k] = input(”Ge ord: ”) 
k += 1
Några råd på vägen...i all välmening...att programmera är att lära sig förstå viktiga skillnader i programspråket man kikar på. Redan alternativens uppbyggnad ger faktiskt fingervisningar om vilka koncept man vill att ni, eleverna, ska fundera över.

I ovanstående fall. "Ska man stoppa på 31 eller på 30?" - det ser man på k>=31 eller k>31 i ena fallet så...ja vaddå? Och i det andra så...ja vaddå?

Dessutom ser man att k tilldelas ett eller 0. Hm...vad får det för tankar, hos dig, som ska fatta liksom. Det är ju det vi talar om. Att få ett facit på en programmeringsuppgift ger inget. Men råd på vilken väg man ska vandra ger något. Vill jag påstå.

Annars tror jag man ska ägna sig åt - ursäkta - något annat eller allvarligt fundera på det i alla fall. Varför säger jag så? Jo, för att programmering är just det, att tillverka saker av saker som inte setts förut. Att förstå programspråkens olika typer av strukturer på data såväl som på program.

Att förstå grundläggande datorlära torde vara steg ett. Alltså vad är namn[0]? Vad är det? En vektor. Just det. Vad är en vektor? Tja...det får man liksom komma på själv, en egen karta över hur man ser på just namn[0], namn[1]..., namn[n-1], namn[n].

Vet man det, till en början, så spelar det faktiskt ingen roll vilket programspråk man pysslar med. Det är lite ; som ska vara på rätt plats, det är lite - i Pythons fall, vilket jag faller på då och då... - betydelsebärande att kod som ser ut så här:
Kod:
if i = 0:
  print "kalle"
print "olle
skiljer sig markant från beteende av
Kod:
if i = 0:
print "kalle"
print "olle

Du råkar inte vara lärare?
Citera
2013-07-14, 22:47
  #32
Moderator
vhes avatar
Citat:
Ursprungligen postat av mofasti
Hur tilldelar man elementet på platsen med index k i listan namn värdet 172?

Här har jag svårt att veta vad jag gör fel. Jag provar på som jag läst i teorin och skriver i detta fall.

namn[k] = "172"

Detta blir dock fel, har ni någon anning om vad jag har gjort för fel här?

"172" är en sträng (alltså text). 172 är en integer (alltså ett tal). Tilldelning i sig är korrekt, det är värdet du stoppar in som är av fel typ.
Citera
2013-07-14, 23:01
  #33
Medlem
Citat:
Ursprungligen postat av vhe
"172" är en sträng (alltså text). 172 är en integer (alltså ett tal). Tilldelning i sig är korrekt, det är värdet du stoppar in som är av fel typ.

Ska jag då byta på k och 172?
Citera
2013-07-14, 23:03
  #34
Moderator
vhes avatar
Citat:
Ursprungligen postat av mofasti
Ska jag då byta på k och 172?

Förstår inte frågan. Men i alla fall, vill du stoppa in talet 172 i din lista, på plats k skriver du:

Kod:
namn[k] = 172
Citera
2013-07-17, 14:50
  #35
Medlem
Pedersons avatar
Jag har sånna jävla problem med en uppgift...

Kod:
Vilket/vilka av följande kodsnuttar skriver ut alla 19 ord som finns 
i listan ”namn”?

Ange de eller det alternativ som är korrekt.


m = 0 
while m < 19: 
    print(namn[m], end=" ")
    m += 1

m = 0 
while m < 19: 
    print(namn[m], end=" ")
m += 1

m = 0 
sum = "" 
while m <= 19: 
    sum += namn[m] 
    m += 1 
print(sum)

m = 1 
while m < 19: 
    print(namn[m], end=" ")
    m += 1

m = 0 
sum = "" 
while m < 19: 
    sum += namn[m] 
    m += 1 
print(sum)

I min värld så är BARA 1a alternativet rätt då det är den enda som printar 19 ord ur listan "namn". Dem andra innehåller okorrekt syntax och den andra är t.o.m en så kallad evig loop.

Ändå så får jag fel på denna frågan, om och om igen? Alltså måste någon annan vara rätt eller jag ha helt fel?

Har även kört alla looparna för att kolla vilka som är korrekta och även det har stärkt min ståndpunkt.

Mailade mentorn och där så sa dem bara åt mig att klura på hur while-slingan fungerar, vilket inte hjälpte mig ett dugg.

Snälla flashback, hjälp mig
Citera
2013-07-17, 22:30
  #36
Moderator
vhes avatar
Citat:
Ursprungligen postat av Pederson
I min värld så är BARA 1a alternativet rätt då det är den enda som printar 19 ord ur listan "namn". Dem andra innehåller okorrekt syntax och den andra är t.o.m en så kallad evig loop.

Jag håller nog med din mentor. Det finns en kodsnutt till som gör jobbet. Har du lust att förklara varför block 3-5 inte funkar? Skippa 2:an, den är, som du redan noterat, en oändlig loop.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback