Vinnaren i pepparkakshustävlingen!
2011-11-24, 23:08
  #373
Medlem
Ymer2ks avatar
Citat:
Ursprungligen postat av vhe
Om nov[0] = ['M\xe5n', '10:00-12:00', '7', 'nov', 'Lab'], så är nov[0][0] = 'M\xe5n'. Du har en lista av tupler. Första [0] hämtar första tuplen ur listan, andra [0] hämtar första elementet ('M\xe5n') ur tuplen.

För att sortera gör du (nästan) som jag sa. Om listan med all data heter L bör kodsnutten jag postade ovan fungera. Nästan. Den antar nämligen att datumen är integers, inte strängar. Detta bör vara lätt ordnat genom att anropa int() på datumet på stället där du extraherar det.


Jag ändrade så det är en integer nu och sen kör jag din kod
Kod:
nov.sort(key=lambda i: (i[2]))
men får error att:

nov.sort(key=lambda i: (i[2]))
TypeError: 'int' object is not subscriptable

Jag har ingen aning vad dom menar med de error medelandet. jag ändrade visst den till en integer...

Jag har hakparenteser instället för vanliga, spelar det någon roll?

Edit: Nej, det måste ju vara hakprenteser för tuble kan man ju inte ändra.
__________________
Senast redigerad av Ymer2k 2011-11-24 kl. 23:13.
Citera
2011-11-24, 23:19
  #374
Moderator
vhes avatar
Citat:
Ursprungligen postat av Ymer2k
Jag ändrade så det är en integer nu och sen kör jag din kod
Kod:
nov.sort(key=lambda i: (i[2]))
men får error att:

nov.sort(key=lambda i: (i[2]))
TypeError: 'int' object is not subscriptable

Jag har ingen aning vad dom menar med de error medelandet. jag ändrade visst den till en integer...

Jag har hakparenteser instället för vanliga, spelar det någon roll?

Edit: Nej, det måste ju vara hakprenteser för tuble kan man ju inte ändra.

Mja, förutsatte att du ville sortera hela listan. Inte ett element? Alltså listan med alla "labbar".

Kod:
L = [['M\xe5n', '10:00-12:00', '7', 'nov', 'Lab'], ['Ons', '08:00-10:00', '30', 'nov', 'Frl'], ['Ons', '15:00-17:00', '23', 'nov', 'Ovn'], ['M\xe5n', '08:00-10:00', '28', 'nov', 'Frl'], ['M\xe5n', '13:00-15:00', '21', 'nov', 'Frl'], ['Ons', '08:00-10:00', '16', 'nov', 'Ovn'], ['Fre', '15:00-17:00', '25', 'nov', 'Lab'], ['Ons', '15:00-17:00', '9', 'nov', 'Frl'], ['Fre', '15:00-17:00', '11', 'nov', 'Frl'], ['Fre', '15:00-17:00', '18', 'nov', 'Lab'], ['Ons', '13:00-15:00', '23', 'nov', 'Frl'], ['Tis', '15:00-17:00', '1', 'nov', 'Ovn']]
L.sort(key=lambda i: (i[3], i[2], i[1]))

Men som sagt, sorteringsordningen kommer bli fel så länge datumen är strängar.
Citera
2011-11-24, 23:26
  #375
Medlem
Ymer2ks avatar
Citat:
Ursprungligen postat av vhe
Mja, förutsatte att du ville sortera hela listan. Inte ett element? Alltså listan med alla "labbar".

Kod:
L = [['M\xe5n', '10:00-12:00', '7', 'nov', 'Lab'], ['Ons', '08:00-10:00', '30', 'nov', 'Frl'], ['Ons', '15:00-17:00', '23', 'nov', 'Ovn'], ['M\xe5n', '08:00-10:00', '28', 'nov', 'Frl'], ['M\xe5n', '13:00-15:00', '21', 'nov', 'Frl'], ['Ons', '08:00-10:00', '16', 'nov', 'Ovn'], ['Fre', '15:00-17:00', '25', 'nov', 'Lab'], ['Ons', '15:00-17:00', '9', 'nov', 'Frl'], ['Fre', '15:00-17:00', '11', 'nov', 'Frl'], ['Fre', '15:00-17:00', '18', 'nov', 'Lab'], ['Ons', '13:00-15:00', '23', 'nov', 'Frl'], ['Tis', '15:00-17:00', '1', 'nov', 'Ovn']]
L.sort(key=lambda i: (i[3], i[2], i[1]))

Men som sagt, sorteringsordningen kommer bli fel så länge datumen är strängar.


Jaaaa! äntligen fungerar det! Tack så hemskt mycket!
Citera
2011-11-24, 23:54
  #376
Medlem
Ymer2ks avatar
DÅ stöter man ju såklart på andra helt olösliga problem med felmedelanden som är omöjliga att få ut något av...

Kod:
def print_schedule(data):
    print "----------- Schedule -------------";
    nov=[0]
    okt=[0]
    dec=[0]
    nov1='nov'
    okt1='okt'
    dec1='dec'    
    for key in data:
        lista = data[key];
        ######### Sorterar alla november till nov vektor
        lista =list(lista)   #gör en list av lista
        if  nov1 in lista[2]: #ser efter om det är rätt månad
            siffranov=filter(lambda po: po.isdigit(), lista.pop(2)) #tar ur datum
            lista.insert(2,int(siffranov)) #lägger in bara datum dag, egen plats
            lista.insert(3, nov1) #lägger in bara nov, egen plats
            nov.append(lista)#sparar alla november aktiviteter i nov vektor
        lista= tuple(lista) #gör tillbaka till tuble
        ######### Sorterar alla okt till okt vektor
        lista =list(lista)   #gör en list av lista
        elif okt1 in lista[2]: #ser efter om det är rätt månad
            siffraokt=filter(lambda po: po.isdigit(), lista.pop(2)) #tar ur datum
            lista.insert(2,int(siffraokt)) #lägger in bara datum dag, egen plats
            lista.insert(3, okt1) #lägger in bara okt, egen plats
            okt.append(lista)#sparar alla oktober aktiviteter i okt vektor
        lista= tuple(lista) #gör tillbaka till tuble

Nu försöker jag sortera oktober vektorn men får ett syntax error på elif som är helt oförklarligt!

Edit: Okej jag fick det att fungera om jag skrev ut alla som if och ändrade lite på list, men det borde ha fungerat med elif också!
__________________
Senast redigerad av Ymer2k 2011-11-25 kl. 00:49.
Citera
2011-11-25, 11:46
  #377
Medlem
Citat:
Ursprungligen postat av Ymer2k
Kod:
...
        if  nov1 in lista[2]: #ser efter om det är rätt månad
            siffranov=filter(lambda po: po.isdigit(), lista.pop(2)) #tar ur datum
            lista.insert(2,int(siffranov)) #lägger in bara datum dag, egen plats
            lista.insert(3, nov1) #lägger in bara nov, egen plats
            nov.append(lista)#sparar alla november aktiviteter i nov vektor
        lista= tuple(lista) #gör tillbaka till tuble
        ######### Sorterar alla okt till okt vektor
        lista =list(lista)   #gör en list av lista
        elif okt1 in lista[2]: #ser efter om det är rätt månad
...

Nu försöker jag sortera oktober vektorn men får ett syntax error på elif som är helt oförklarligt!

Du bryter ju av hela satsen när du har två rader kod som ligger på samma nivå som if innan elif.
Citera
2011-11-25, 18:58
  #378
Medlem
Ymer2ks avatar
Citat:
Ursprungligen postat av tradig
Du bryter ju av hela satsen när du har två rader kod som ligger på samma nivå som if innan elif.

Ja, jag märkte det. Tack
Citera
2011-11-30, 16:21
  #379
Medlem
Hej! Jag har en fråga angående tkinter, hur man från en Entry-widget kommer ihåg något man skriver in, behandlar detta i en funktion och sedan skriver ut det som en Label-widget? Jag gör ett program som skriver om till rövarspråk, och än så länge ser min (ofullständiga) kod ut så här:

Kod:
from tkinter import *

def translate():
	for x in range(0,len(var)):
		if var[x] in "bcdfghjklmnpqrstvxz":
			strang=var[x]+"o"+var[x]
			print(strang,end="")
		elif var[x] in "BCDFGHJKLMNPQRSTVXZ":
			strang=var[x]+"o"+var[x]
			print(strang,end="")
		else:
			print(var[x],end="")

master = Tk()

var = StringVar()
entr = Entry(master, textvariable=var)
entr.pack()

but = Button(master, text="Oversatt till rovarsprak!",command=translate)
but.pack()

master.mainloop()

Jag måste ju använda StrinVar() funktionen på något sätt, men efter många sidors sökande så fattar jag fortfarande inte hur jag ska använda den eller vad den faktiskt gör...

Jag vet också att min "for x..." slinga är fel för tkinter, men mitt program var först icke-grafiskt, så jag kopierade bara min slinga därifrån.

Tacksam för hjälp!
Citera
2011-11-30, 22:05
  #380
Medlem
poolos avatar
Går det att ta reda på hur mycket memory en funktion använder i Python 3.2?
Citera
2011-12-03, 23:11
  #381
Medlem
Hej!

Ursäkta för udda fråga, men;

Sitter med två uppgifter för skolan och förstår inte alls hur jag ska göra.

Om du skulle kunna hjälpa mig vore jag oerhört tacksam.

http://i.imgur.com/qiKW5.png

http://i.imgur.com/FfVOa.png

Jag printscreenade uppgifterna.

OM någon har tid att hjälpa mig är du bäst.

Tack!
Citera
2011-12-03, 23:44
  #382
Medlem
Zoms avatar
Varför inte bara testköra kodsnuttarna så ser du på en gång?
Citera
2011-12-04, 14:32
  #383
Medlem
Kod:
def bladdraf():
    f=0
    print(handelser[f])
    while f<len(handelser):
        svblf=input("Vill du bläddra fram till nästa aktivitet? (j/n)\n")
        if svblf=="j":
            f+=1
            print(handelser[f])
        if svblf=="n":
            break
        else:
            print("Du måste skriva in j för att bläddra frammåt eller n för att återgå till menyn")
            ValueError

Hej!
Jag ska fixa ihop en kod för en filofax. Man ska kunna bläddra frammåt i filofaxen dvs till nästa aktivitet. Aktiviteterna sparas i en lista som heter handelser.
När man väljer alternativ 1 i menyn ska första aktiviteten (dvs med index 0) visas. Man ska sedan få upp en fråga om hurvida man vill fortsätta bläddra framåt bland sina aktiviteter. Dock ska denna fråga ej komma upp då man befinner sig i sista händelsen. Och det är det jag behöver hjälp med
Kan någon försöka hjälpa mig att fixa till detta problem? Vore snällt!
Citera
2011-12-04, 22:32
  #384
Medlem
jonthe12s avatar
Citat:
Ursprungligen postat av elfenbenskusten1
Hej!
Jag ska fixa ihop en kod för en filofax. Man ska kunna bläddra frammåt i filofaxen dvs till nästa aktivitet. Aktiviteterna sparas i en lista som heter handelser.
När man väljer alternativ 1 i menyn ska första aktiviteten (dvs med index 0) visas. Man ska sedan få upp en fråga om hurvida man vill fortsätta bläddra framåt bland sina aktiviteter. Dock ska denna fråga ej komma upp då man befinner sig i sista händelsen. Och det är det jag behöver hjälp med
Kan någon försöka hjälpa mig att fixa till detta problem? Vore snällt!

Du kan få antalet aktiviteter i listan med hjälp av len(). len(handelser). f är akitiviteten du är för tillfället. Så:

Kod:
if f == len(aktiviteter)-1:
    print "Du har nått slutet av filofaxen"

-1 eftersom index börjar på 0 och inte 1. len() av [1] blir t ex inte 0 utan 1.

Edit
Du hade redan en whileloop som kollade det där såg jag nu. Du har inte tänkt på att du måste ta -1 av len()!
__________________
Senast redigerad av jonthe12 2011-12-04 kl. 22:37.
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