Vinnaren i pepparkakshustävlingen!
2014-01-17, 08:40
  #913
Moderator
vhes avatar
Citat:
Ursprungligen postat av nicken89
Hur funkar det nar man inte soker med det fulla namnet?

Letar efter en bit text som innehaller med sakerhet order "/na/summoner/" och efter det en massa nummer som ar olika for varje person.

Problemet ar att sidan innehaller atminstone 3 olika bitar text som borjar pa "/na/summoner/", dock vet jag att jag den jag vill ha ar den forsta.

Kan jag gora sa att jag tar all text med orden "/na/summoner" via en listfunktion, och sedan omvandlar funktionen till en string och endast tar forsta biten av listan?

EX:
Kod:
webpage = urlopen('hemsidan')
FindSummonerIcon = re.compile('/na/summoner')
GetSummonerIcon = re.findall(FindSummonerIcon, webpage)
GetIcon = GetSummonerIcon[0]
Borde val funka?

Det där är inte BeautifulSoup längre. Nu gör du ren regexp-matchning. Du kommer endast hitta strängen '/na/summoner', vilket inte hjälper dig så mycket. Jag vet faktiskt inte hur man gör det i BeautifulSoup - aldrig använt det, men ett tips är att göra find_all på något bra kriterie och inne i loopen titta noggrannare på om det är vad du vill ha.

Varför döper du förresten dina variabler till Find.. och Get..? Verbbaserade namn brukar användas för funktioner.
Citera
2014-01-20, 01:22
  #914
Medlem
Citat:
Ursprungligen postat av vhe
Det där är inte BeautifulSoup längre. Nu gör du ren regexp-matchning. Du kommer endast hitta strängen '/na/summoner', vilket inte hjälper dig så mycket. Jag vet faktiskt inte hur man gör det i BeautifulSoup - aldrig använt det, men ett tips är att göra find_all på något bra kriterie och inne i loopen titta noggrannare på om det är vad du vill ha.

Varför döper du förresten dina variabler till Find.. och Get..? Verbbaserade namn brukar användas för funktioner.
Forlat, nagonting blev konstigt i mitt forvirrade huvud
Sahar ska koden se ut:
Kod:
import bs4
from bs4 import BeautifulSoup
import re
import urllib
from urllib import urlopen

soup = BeautifulSoup(urllib.urlopen("hemsidan").read())
for link in soup.find_all('a', href=re.compile('/na/summoner/')):
    SummonerNA = link.get('href'))[0]

"Varför döper du förresten dina variabler till Find.. och Get..? Verbbaserade namn brukar användas för funktioner."

Tack, det ar sant som jag vill lara mig, vet knappt nar man ska anvanda class, eller hur jag ska konstruera koden sa att den blir mer lasbar. Just nu kor jag en class for hela programmet och lagger alla 'def XXX' hogst upp
__________________
Senast redigerad av nicken89 2014-01-20 kl. 01:29.
Citera
2014-01-20, 05:05
  #915
Medlem
Okej, ska forsoka fa med allting jag vill lara mig i en fraga, forlat for att jag dubbelpostar sa mycket, verkar endast handa i Systemutvecklings forat.
Innan jag borjar vill jag saga att jag har knappt nagon erfarenhet alls av programmering, behandla mig som ett barn.
Har tidigare anvant VB.Net och kommer darfor att anvanda det som en referens nar jag forklarar sa att ifall nagon vet hur VB.Net funkar kommer de forsta precis vad jag menar.

All kod ar i stort sett fardig skriven, det jag behover hjalp med ar hur jag ska strukturera koden sa att den funkar bra och ar lasbar.

Jag vill skapa ett program med 3 olika fonster i som ploppar upp, har gjort en enkel paintbild for att ni ska fa en overhangande ide om vad det ar jag vill vill gora, http://postimg.org/image/681v3vi8z/

Ruta 1 ar rutan som ska visas nar man startar programmet.
Ruta 2 ska visas nar man klickar pa knapp 1 eller 2, da ska samtidigt Ruta 1 gommas.
Ruta 3 ska visas nar fyllt i texten i textladan, kryssat i en av ladorna och klickat knapp 3.

I Visual Studio sa skapas en Ruta enkelt genom att skapa en ny Windows Form, all kod man vill ha inuti rutan man skapat hamnar i en egen flik, separerad fran allt annat, och man kan enkelt kalla fram rutan via:
Kod:
Dim frm1 As New Form1
frm1.Show()

Om jag vill strukturera koden pa samma satt som man gor i Visual Studios, hur gor jag da i python, skapar jag en class for varje ruta, och isafall, hur kallar man fram en class?

Just nu har jag skrivit det pa detta viset, 1 class for hela koden, och massa javla definitioner inuti definitioner, ser ut som en javla rora och det funkar inte sa klart.

Jag vill att det ska se ut ungefar sahar:
Kod:
class Ruta_1(Tkinter.Frame):
    #all kod for att skapa knappar och sadant skit

class Ruta_2(Tkinter.Frame):
    def funktion():
        #kod for alla funktioner jag kommer anvanda i den har rutan
    #kod for alla knappar osv

class Ruta_3(Tkinter.Frame):
    def merafunktioner():
        #kod for alla funktioner
    #kod for alla knappar osv

Tycker koden blir fin och lasbar i det har fallet, fragan ar dock, ska man gora sahar? Hur kallar man fram rutorna (a.k.a klasserna)? Finns det ett battre satt att gora det pa?

An en gang, behandla mig som en nyborjare som inte ens vet vad en class ar (for det vet jag arligt talat inte).

Tusen tack pa forhand!
Citera
2014-01-22, 00:38
  #916
Medlem
Hej, skulle behöva hjälp med indexering av listor i en lista.
Jag skulle vilja numrera listorna så att det ser ut såhär:

Har försökt med:

Men resultat blir fel:

Som ni ser hamnar inte 1, 2 och 3 i en lista, de hamnar "utanför"

Vad gör jag för fel?
Citera
2014-01-22, 05:19
  #917
Medlem
Citat:
Ursprungligen postat av Jesstess123
Hej, skulle behöva hjälp med indexering av listor i en lista.
Jag skulle vilja numrera listorna så att det ser ut såhär:

Har försökt med:

Men resultat blir fel:

Som ni ser hamnar inte 1, 2 och 3 i en lista, de hamnar "utanför"

Vad gör jag för fel?
Ar sjalv nyborjare sa jag kanske har helt fel.
Men med koden:
Kod:
matrix = [['B Borg', '3'], ['F Perry', '7'], ['R Nadal', '3']]
Sa skapas 3 olika 'delar'.
Och med koden
Kod:
matrix.insert([0][0], "1")
Sager du till programmet att lagga till "1" fore allting annat.
Med
Kod:
matrix.insert([1][0], "2")
sager du till programmet att lagga till "2" efter forsta 'delen' dvs "1".
Ifall du vill att "1", ska ligga fore B Borg, "2" ska vara fore F Perry och "3" ska vara fore R Nadan ska du skriva det sahar:
Kod:
matrix.insert([0][0], "1")
matrix.insert([2][0], "2")
matrix.insert([4][0], "3")

Problemet ar nu att koden kommer se ut sahar:
Kod:
['1', ['B Borg', '3'], '2', ['F Perry', '3'], '3', ['R Nadal', '3']]
Hur du ska fa in siffrorna inuti varje [] vet jag faktiskt inte, problemet ar att du inte sager att du vill att programmet ska lagga in strangen till en redan existerande strang, utan att du endast vill lagga till den i en viss ordning i listan.

Lite battre forklaring:
__________________
Senast redigerad av nicken89 2014-01-22 kl. 05:26.
Citera
2014-01-22, 10:42
  #918
Medlem
Sumsarrs avatar
Citat:
Ursprungligen postat av Jesstess123
Hej, skulle behöva hjälp med indexering av listor i en lista.
Jag skulle vilja numrera listorna så att det ser ut såhär:

Har försökt med:

Men resultat blir fel:

Som ni ser hamnar inte 1, 2 och 3 i en lista, de hamnar "utanför"

Vad gör jag för fel?

Felet du gör är att du insertar på fel ställe. Insert-funktionen går bara, såvitt jag vet, in en nivå i listan. Din liststruktur har två nivåer (en lista med listor).

Det du vill göra är därför att öppna upp huvudlistan och plocka fram listan du vill stoppa fram något i. Väl där kan du använda insert för att välja ett index.

Kod:
matrix.insert([0][0],"1")... matirx.insert([1][0],"2") osv


Bör bytas ut mot:

Kod:
matrix[0].insert(0, "1")....matrix[1].insert(0, "2") osv

Ytterligare tips:

Du bör undvika kodupprepning. Att skriva ett block med matrix.insert's bör istället skrivas med en loop. T.ex.

Kod:
for i in range(len(matrix)):
    matrix[i].insert(0, str(i+1))
Citera
2014-02-13, 16:19
  #919
Medlem
Tog upp detta tidigare i fel tråd. så får försöka här. Det jag har problem med är i alla fall att få den här koden att fungera. Har förstått att jag måste använda mig utav kodtaggar. Men vet inte hur jag ska göra då jag endast till punkt och pricka följt en youtube video när jag skrev koden.. Man måste liksom börja någon stans..

Kod:
x = input("Skriv ditt namn: ")
print("Ditt namn är ") + x
b = input("Skriv din kompis namn: ")
print("Din kompis namn är ") + b 

Jag följde denhär filmen när jag skrev den: http://www.youtube.com/watch?v=qsTdaxahTsM
Det ända jag har ändrat på är raw_input till input då raw inte fungerade över huvud tagen och som jag har förstått så utgick det med 3.0 versionen. Är som ni nog förstår lite förvirrad.

Skulle även uppskatta ifall det finns någon Uppdaterad bok som man kan köpa om att lära sig Python? Alla jag har hittat är uråldrade och liknande problem som detta uppkommer gång på gång i dessa också.
__________________
Senast redigerad av skraparigraven 2014-02-13 kl. 16:22.
Citera
2014-02-13, 16:39
  #920
Moderator
vhes avatar
Citat:
Ursprungligen postat av skraparigraven
Tog upp detta tidigare i fel tråd. så får försöka här. Det jag har problem med är i alla fall att få den här koden att fungera. Har förstått att jag måste använda mig utav kodtaggar. Men vet inte hur jag ska göra då jag endast till punkt och pricka följt en youtube video när jag skrev koden.. Man måste liksom börja någon stans..

Kod:
x = input("Skriv ditt namn: ")
print("Ditt namn är ") + x
b = input("Skriv din kompis namn: ")
print("Din kompis namn är ") + b 

Jag följde denhär filmen när jag skrev den: http://www.youtube.com/watch?v=qsTdaxahTsM
Det ända jag har ändrat på är raw_input till input då raw inte fungerade över huvud tagen och som jag har förstått så utgick det med 3.0 versionen. Är som ni nog förstår lite förvirrad.

Skulle även uppskatta ifall det finns någon Uppdaterad bok som man kan köpa om att lära sig Python? Alla jag har hittat är uråldrade och liknande problem som detta uppkommer gång på gång i dessa också.

Gör http://docs.python.org/3.3/tutorial/, kanske?

För att få ovanståend att fungera bör du flytta in konkatenerandet innanför paranteserna:
Kod:
print("Ditt namn är " + x)
Citera
2014-02-13, 21:47
  #921
Medlem
Citat:
Ursprungligen postat av vhe
Gör http://docs.python.org/3.3/tutorial/, kanske?

För att få ovanståend att fungera bör du flytta in konkatenerandet innanför paranteserna:
Kod:
print("Ditt namn är " + x)
Tyvärr så återstår samma problem :/

Men texten du skickade verkar det finnas mycket lärorik info i! Ska ta och börja läsa igenom det och testa mig fram.
Citera
2014-02-13, 23:37
  #922
Moderator
vhes avatar
Citat:
Ursprungligen postat av skraparigraven
Tyvärr så återstår samma problem :/

OK, då får du nog, som jag sa i förra tråden, posta hela programmet och hela tracebacken (i kodtaggar) och berätta vilken version av python du kör. Annars är det svårt att uttala sig mer.

(ja, alltså, förändringen behövs på båda raderna som gör print, om det inte framgick)
Citera
2014-02-14, 22:44
  #923
Medlem
Citat:
Ursprungligen postat av vhe
OK, då får du nog, som jag sa i förra tråden, posta hela programmet och hela tracebacken (i kodtaggar) och berätta vilken version av python du kör. Annars är det svårt att uttala sig mer.

(ja, alltså, förändringen behövs på båda raderna som gör print, om det inte framgick)
Jodå det framgick att det skulle stå på båda raderna. Men vet dock inte varför men plötsligt fungerar det.. Hade inte ändrat på koden över huvud taget från igår, ända "ändringen" var att jag startade om datorn. Konstigt men nu fungerar det i alla fall. Tack för hjälpen!
__________________
Senast redigerad av skraparigraven 2014-02-14 kl. 22:47.
Citera
2014-02-16, 19:57
  #924
Medlem
Hej! Har suttit och letat runt lite på fb, stack overflow, pythons egna sida osv men har inte hittat något som förklarat tillräckligt bra. Just nu sitter jag fast på ett problem där jag försöker göra följande i min kod:

global data1,data2,data3

data3 = data2
data2 = data1
data1 = data

Variablerna data1, data2 och data3 är definerade i klassen och detta är en funktion som ska ta in nya värden genom argumentet "data" och sedan skicka vidare tidigare värden till de olika data-variablerna. Problemet är att när jag försöker göra detta så får jag felmeddelandet "NameError: global name 'data2' is not defined". Detta får jag även om jag skriver "global" framför var och en av de globala variablerna.
Vad gör jag för fel?

En nybörjare tackar för hjälp!
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