Vinnaren i pepparkakshustävlingen!
2021-04-17, 14:28
  #1693
Medlem
Citat:
Ursprungligen postat av _x3m_
Är XML eller Excel att föredra?

Säg att ni ska göra olika jämförelser mellan två dokument med Python, ex lagersaldo från två olika månader på olika artiklar.

Är det smidigast att göra detta om dokumenten är i formatet XML eller formatet Excel, har förstått att Python klarar båda bra men vilket är att föredra om man kan välja?

Det spelar egentligen ingen roll då Excel är en mer "fancy" form av XML. Ge Pandas uppdrag att sköta jobbet åt dig. Den klarar biffen lätt. Du kan ju även göra en funktion som ser till att importera båda till Pandas.
Citera
2021-04-17, 14:30
  #1694
Medlem
Citat:
Ursprungligen postat av a-mortal
clear() är ingen funktion, det är en metod. Metoder hör till klasser/instanser och funktioner existerar utanför. Det vill säga du måste skriva turtle.clear(), och då på instansen turtle och inte klassen turtle.
Kod:
t = turtle.Turtle(); t.clear()


finns clear() implementerad i Turtle()? Har aldrig lekt med den modulen. Visste inte att den hade en clear-metod, men anade att den skulle ha något sådant då spelet är till för att göra barn nyfikna på Python.
Citera
2021-04-17, 14:40
  #1695
Medlem
En kanske inte så nybörjaraktiv fråga, men ändå:

Om jag har skapat en databaskoppling:

Kod:
from sqlalchemy import create_engine
from sqlalchemy
.orm import sessionmaker
from sqlalchemy
.ext.declarative import declarative_base

def set_engine
(type_userpswadressdb_name):

    if 
type_ == 'postgresql':
        return 
create_engine(f'postgresql+psycopg2://{user}:{psw}@{adress}/{db_name}',echo=False)

    
elif type_ == 'sqlite':
        return 
create_engine(f'sqlite:///{db_name}.sqlite', echo=False)
    else:
        return 
None 




Kod:
def connect():
    
engine set_engine('postgresql'cred.usercred.passwordcred.adresscred.database)
    
Base.configure(bind=engine)
    
Session.configure(bind=enginge)
    
Base declarative_base()
Sessionsessionmaker()
#Base = declarative_base(bind=engine)
#Session= sessionmaker(bind=engine)
session=Session()


connect() 

Hur kan jag sedan ändra kopplingen. Eller rättare sagt, hur kan jag se till att mitt program har en Base som inte är kopplad förrän jag har valt en Db att koppla till? Hur kan jag sedan ändra denna koppling till en annan Db i programmet?

Jag vill kunna hantera vilken Db jag vill koppla till, i "Preference" i mitt program. Jag vill också kunna manuellt koppla en databas till mitt program.

Just nu får jag fel att Base inte har en "Base.Configure()"
Citera
2021-04-17, 17:39
  #1696
Medlem
toblemonas avatar
Citat:
Ursprungligen postat av a-mortal
clear() är ingen funktion, det är en metod. Metoder hör till klasser/instanser och funktioner existerar utanför. Det vill säga du måste skriva turtle.clear(), och då på instansen turtle och inte klassen turtle.
Kod:
t = turtle.Turtle(); t.clear()
Tack det fungerade!
Citera
2021-04-17, 17:49
  #1697
Medlem
Citat:
Ursprungligen postat av toblemona
Tack det fungerade!

Hade du tittat i Turtlemodulen hade du nog sett att det fanns en metod som rensade terminalen.
Citera
2021-04-18, 18:22
  #1698
Medlem
Citat:
Ursprungligen postat av vhe
Nu vet jag inte om XML är det bästa heller, men det går ju åtminstone att få någorlunda strukturerat och ingen sinnesjuk wannabe-AI bestämmer sig för att ändra på den efter eget tycke. Det beror väl primärt om vad systemen som datan kommer från är kapabla att spotta ur sig.

Vad är det bästa då? JSON? CSV?
Citera
2021-04-18, 19:02
  #1699
Medlem
Citat:
Ursprungligen postat av _x3m_
Vad är det bästa då? JSON? CSV?

Sluta komplicera det hela...

Använd Pandas för att importera båda filerna till två olika DataFrames. Sedan tar du helt enkelt och frågar Herr pyton det du vill fråga. När filerna väl är i DataFrames kan du göra vad fan du vill med dem genom Pandas och Pythons egna metoder och funktioner.

Kod:
import pandas as pd

file1 
" movies_2010.xls"
file2 "movies_2020.xls"

df_2010 pd.read_excel(file1)
df_2020 pd.read_excel(file2)

new_db_only_directors df_2010.loc[df_2010['Director'] == df_2020['Director'], ;]

new_db_only_directors.head() 

Importerar de två excelfilerna och sedan skapar varsin DataFrame av tabellerna. Sedan skapas en ny DataFrame med enbart poster i file1 som innehåller regissörer som också återfinns i file 2.

Klappart och klart.

Med pandas gör du precis vad du vill med data. Du behöver inte använda något annat än pandas och numpy när du jämföra och manipulerar data i olika tabeller.


https://pandas.pydata.org/docs/index.html
Citera
2021-05-11, 18:14
  #1700
Medlem
Funderar att börja lära mig phyton som mitt förstaspråk. Tänkt att göra detta själv genom någon onlinekurs. Har ni tips på det bästa sättet att gå till väga? Hur många timmar kommer jag ungefär behöva lägga ner för att lära mig språket på ett helt okej sätt? Skulle beskriva mig som ”normalbegåvad” när det kommer till inlärningsprocesser och har som sagt tidigare 0 erfarenhet av systemutveckling.
Citera
2021-05-11, 21:33
  #1701
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Technerder
Funderar att börja lära mig phyton som mitt förstaspråk. Tänkt att göra detta själv genom någon onlinekurs. Har ni tips på det bästa sättet att gå till väga? Hur många timmar kommer jag ungefär behöva lägga ner för att lära mig språket på ett helt okej sätt? Skulle beskriva mig som ”normalbegåvad” när det kommer till inlärningsprocesser och har som sagt tidigare 0 erfarenhet av systemutveckling.

Spelar ingen större roll vilket språk som du lär dig först, det är själva problemlösning-tänket som är grejen. Var beredd på att lägga hundratals timmar för att bli "helt okej", men du kan göra små coola saker snabbare. En nybörjarvänlig men grundlig poddserie som tar upp HTML/CSS/Javascript (kommer senare eventuellt ta upp PHP) är https://pbs.bartificer.net/ Det finns en fördel med Javascript och det är att alla har tillgång i den direkt i browsern (tryck F12 och klicka på Console) så inträdeströskeln är lägre än alla andra språk.
Citera
2021-05-19, 12:42
  #1702
Medlem
toblemonas avatar
Börjar bli desperat... snart tenta och kan inte ens grunderna i python!
Som den här uppgiften ur boken Python från början:

"i en geometrisk talföljd får man ett tal i följden genom att multiplicera det föregående taet med en konstant k. Skriv ett program som konstruerar en geometrisk talföljd där konstanten k är lika med 3 och det första talet i följden är 2. Talföljden ska läggas i en lista och skrivas ut. Låt den som kör programmet bestämma hur många tal som ska tas med i listan".

Har börjat såhär, har kallat listan för f:

n = int(input('Hur många tal önskas? ')
f = [2]
for i in range(2, n+1):
f += [f[(i-1)*k]]
print(f)

(ska vara en indentering på rad 4)

Men får traceback att "list index out of range"... Antagligen har jag gjort helt fel. Kan någon hjälpa?
Citera
2021-05-19, 17:34
  #1703
Moderator
vhes avatar
Citat:
Ursprungligen postat av toblemona
Börjar bli desperat... snart tenta och kan inte ens grunderna i python!
Som den här uppgiften ur boken Python från början:

"i en geometrisk talföljd får man ett tal i följden genom att multiplicera det föregående taet med en konstant k. Skriv ett program som konstruerar en geometrisk talföljd där konstanten k är lika med 3 och det första talet i följden är 2. Talföljden ska läggas i en lista och skrivas ut. Låt den som kör programmet bestämma hur många tal som ska tas med i listan".

Har börjat såhär, har kallat listan för f:

n = int(input('Hur många tal önskas? ')
f = [2]
for i in range(2, n+1):
f += [f[(i-1)*k]]
print(f)

(ska vara en indentering på rad 4)

Men får traceback att "list index out of range"... Antagligen har jag gjort helt fel. Kan någon hjälpa?

Använd kodtaggar så får du med indentering.

Du är inne på rätt spår, men har ett par små misstag:
1) Eftersom i börjar på 2 så funkar inte din uträkning i - 1 för att hitta föregående element. Du skulle kunna skriva i - 2 istället - men eftersom du alltid är ute efter sista elementet så är det enklare att adressera det med -1, då får man sista elementet. Alltså: f[-1]
2) Du multiplicerar med k på fel ställe. Som du har skrivit det så påverkar k vilket index i listan du letar efter, inte värdet som du får ut därifrån. Alltså istället för f[x*k] (där x är indexet) så bör du nog skriva f[x] * k.
__________________
Senast redigerad av vhe 2021-05-19 kl. 17:58.
Citera
2021-05-21, 18:12
  #1704
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av toblemona
Börjar bli desperat... snart tenta och kan inte ens grunderna i python!
Som den här uppgiften ur boken Python från början:

"i en geometrisk talföljd får man ett tal i följden genom att multiplicera det föregående taet med en konstant k. Skriv ett program som konstruerar en geometrisk talföljd där konstanten k är lika med 3 och det första talet i följden är 2. Talföljden ska läggas i en lista och skrivas ut. Låt den som kör programmet bestämma hur många tal som ska tas med i listan".

Har börjat såhär, har kallat listan för f:

n = int(input('Hur många tal önskas? ')
f = [2]
for i in range(2, n+1):
f += [f[(i-1)*k]]
print(f)

(ska vara en indentering på rad 4)

Men får traceback att "list index out of range"... Antagligen har jag gjort helt fel. Kan någon hjälpa?

Jag skulle göra så här. Var några slarvfel i din kod, förutom vad vhe pekade ut.
Kod:
#!/usr/bin/env python3
# ange K här
int(input('Hur många tal önskas? '))-1  # minska antalet tal med ett, eftersom listor är noll-indexerade
= [2# skapa en lista som börjar på 2
for i in range(0,n): # iterera över n element
    
+= [f[i]] # multiplicera sista elementet i listan med k och lägg till som nytt element i listan
print(f

Edit: om n=0, alltså man vill bara ha 1 tal så körs inte For-loopen utan då är listan fortfarande endast ett element [2].
__________________
Senast redigerad av Enterprise 2021-05-21 kl. 18:36.
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