These are chat archives for dbwebb-se/python

25th
Sep 2017
Allinrep
@pejg12
Sep 25 2017 08:22
@blongho https://asciinema.org/a/139383 en asciinema som visar hej och lunch
annd16 annd16
@annd16__twitter
Sep 25 2017 08:24
     Är det fortfarande OK att använda sig av cmd-modulen i projektet? 

I så fall skulle jag vilja installera turtle-modulen enligt exemplet:
https://docs.python.org/3/library/cmd.html
(för att testa cmd-modulen).
Men får ett felmeddelande när jag försöker installera med pip3:

Anna@DESKTOP-MR93IEC /cygdrive/c/Users/Anna/dbwebb-kurser/python/me/kmom10
$ pip3 install turtle
Collecting turtle
Using cached turtle-0.0.2.tar.gz
Complete output from command python setup.py egginfo:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-2a19rkn
/turtle/setup.py", line 40
except ValueError, ve:
^
SyntaxError: invalid syntax

----------------------------------------

Command "python setup.py egginfo" failed with error code 1 in /tmp/pip-build-2a19rkn/turtle/

Kan bero på att filen använder sig av python2-syntax, och att jag kör python3 (i cygwin), finns det någon som vet om/hur jag kan lösa detta problem?
Om jag försöker installera med "pip" (och inte pip3) kanske jag stöter på problem?

Allinrep
@pejg12
Sep 25 2017 08:25
kolla först om turtle finns på studentservern, annars är det ingen idé.
annd16 annd16
@annd16__twitter
Sep 25 2017 08:26
Men jag tänkte bara prova lokalt.
okej
Mikael Roos
@mosbth
Sep 25 2017 08:26
undvik turtle då det innehåller fönsterhantering. det ligger ett exempel i kursrepot under example/cmd/dice som kan vara enklare att komma igång med.
Man kan använda den modulen i projektet, tänkte säga nåt om det på sista föreläsningen inför projektet.
annd16 annd16
@annd16__twitter
Sep 25 2017 08:27
Ok då prövar jag det exemplet istället, tack!
Allinrep
@pejg12
Sep 25 2017 08:27
@Daggerby det är aldrig bra att lämna in ofullständigt, det ger inget alls. det slösar både din och rättarens tid. gör klart innan du lämnar in, en sen inlämning är inte värre än en komplettering.
@Xelect istället för dummy_i kan man skriva det så kort som _. då blir det for _ in mylist:
limy17
@limy17
Sep 25 2017 08:47
Hej! Jag skulle behöva lite hjälp med hur man importerar en .py-fil till en annan. Terminalen säger unused import.
Allinrep
@pejg12
Sep 25 2017 08:48
hur importerar du nu?
limy17
@limy17
Sep 25 2017 08:50
import marvin
Allinrep
@pejg12
Sep 25 2017 08:50
och hur använder du importen?
hur använder du funktioner från marvin?
limy17
@limy17
Sep 25 2017 08:56
@pejg12 Jag anropade en funktion från marvin i main, men det funkade inte.
Marvin.py ska importeras till Main.py. Här är koden till main: https://codeshare.io/21D0mX
Allinrep
@pejg12
Sep 25 2017 09:00
är det hela main.py? där används ju inte marvin någonstans
limy17
@limy17
Sep 25 2017 09:00
quotes.py innehåller citat-spelet, som också skulle importeras.
Det är för att jag inte förstår hur jag ska göra :)
Har Googlat och läst kurslitteratur, men inte blivit klokare ang. detta...
Allinrep
@pejg12
Sep 25 2017 09:04
limy17
@limy17
Sep 25 2017 09:05
Ja, men när jag anropar en funktion funkar det inte, den är inte "initierad" enligt terminalen.
Allinrep
@pejg12
Sep 25 2017 09:05
hur anropar du funktionen då?
jag såg inget sådant försök i din codeshare
limy17
@limy17
Sep 25 2017 09:05
jag tog bort det
Allinrep
@pejg12
Sep 25 2017 09:05
det var ju dumt :)
limy17
@limy17
Sep 25 2017 09:06
function() bara
Allinrep
@pejg12
Sep 25 2017 09:06
är mycket lättare att hjälpa när jag ser vad du har försökt
då får du kolla övningen igen, där står hur man ska göra
limy17
@limy17
Sep 25 2017 09:07
Jag vet att de gör på ett annat sätt i övningen, men jag ville att hela programmet från marvin skulle starta i main.
fefr17
@fefr17
Sep 25 2017 09:08
Jag lyckas inte lösa The if statement can be replaced with 'return bool(test)' (simplifiable-if-statement) när jag validerar. har skrivit If statment return true else false. Har provat de "lösningar" jag hittat men får inget att fungera. Antingen får jag fel svar eller fel validering.
Allinrep
@pejg12
Sep 25 2017 09:08
att importera en modul i python är inte som att inkludera en fil i php
limy17
@limy17
Sep 25 2017 09:08
Ok, ska gå igenom övningen igen. Återkommer om jag fortfarande inte får det att fungera. Tack!
Allinrep
@pejg12
Sep 25 2017 09:12
@fefr17 det står mer om simplifiable if-statement i FAQ-tråden: https://dbwebb.se/t/2479
Bernard Longho
@blongho
Sep 25 2017 09:13
@pejg12 tack
limy17
@limy17
Sep 25 2017 09:20
Har uppdaterat koden nu: https://codeshare.io/21D0mX
Allinrep
@pejg12
Sep 25 2017 09:20
vad blir resultatet av den koden?
limy17
@limy17
Sep 25 2017 09:20
Testade med punkt mellan filnamn och funktion tidigare också, men får det fortfarande inte att fungera.
Allinrep
@pejg12
Sep 25 2017 09:22
allt som har att göra med att tolka menyn bör ligga i main, sedan bör resten ligga i marvin. du bör ta input i main och tolka input i main, och när du väl har tolkat vad det är användaren ville göra så kallar du på en funktion från marvin för att utföra det jobbet.
limy17
@limy17
Sep 25 2017 09:23
Att bara menuMenu() körs, men inte de från quotes.py
Varför står det "emil_energy =" först, i exemplet?: emil_energy = energy_calculation.calculate_energy(emil_time)
Allinrep
@pejg12
Sep 25 2017 09:26
calculate_energy() är en funktion som returnerar ett värde. det returnerade värdet sparas till variabeln emil_energy
limy17
@limy17
Sep 25 2017 09:27
Ok, men varför skriver dom det där funktionen ska importeras?
Allinrep
@pejg12
Sep 25 2017 09:27
emil_energy = str(42) är samma sak. funktionen str() returnerar ett värde och emil_energy sparar det värdet.
funktionen importeras inte, den körs
när du har skrivit import marvin så har du importerat allt som finns i marvin.py så att main.py har tillgång till alla dess funktioner
limy17
@limy17
Sep 25 2017 09:28
Vad fattas i min kod i main?
fefr17
@fefr17
Sep 25 2017 09:29
Tack för länken och jag läste om problemet ngn hade på kmom02. Men jag förstår inte hur jag skriver denna kod enklare- https://codeshare.io/5ZbpRV
Allinrep
@pejg12
Sep 25 2017 09:29
hm, det verkar som att det har försvunnit en guide någonstans
limy17
@limy17
Sep 25 2017 09:30
Hur gör jag för att "använda" funktionen backpack() från quotes.py i main, om det inte räcker att skriva backpack()?
Allinrep
@pejg12
Sep 25 2017 09:34
@limy17 den yttre skalet av koden som finns i example/marvin/marvin.py borde finnas i din main. det som finns inuti elif choice borde däremot flyttas ut till marvin.py som funktioner.
@fefr17 svaret är längst ner https://dbwebb.se/f/54912
linkanin
@linkanin
Sep 25 2017 09:38
$ python3 example/file/list-to-file.py
Traceback (most recent call last):
  File "example/file/list-to-file.py", line 10, in <module>
    with open(filename) as filehandle:
FileNotFoundError: [Errno 2] No such file or directory: 'items.txt'
jag ligger lite efter just nu. kmom04. mycket jobb etc. :) får inte första steget att fungera
Allinrep
@pejg12
Sep 25 2017 09:39
$ cd example/file
$ python3 list-to-file.py
linkanin
@linkanin
Sep 25 2017 09:39
ok
Allinrep
@pejg12
Sep 25 2017 09:39
relativa sökvägar kan ställa till det ibland
linkanin
@linkanin
Sep 25 2017 09:39
I see :) tackar
Allinrep
@pejg12
Sep 25 2017 09:41
@limy17 steg 1 var att byta namn på marvin.py till main.py istället. sen skulle man flytta "menyvalsfunktioner" till en ny fil. jag misstänker att du flyttade ut för mycket.
limy17
@limy17
Sep 25 2017 09:42
@pejg12 Hur då menar du?
Allinrep
@pejg12
Sep 25 2017 09:44
lägg tillbaka allt i main.py. alltihop :)
få det att fungera inne i main.py. sen kan vi bryta ut en sak i taget efteråt.
limy17
@limy17
Sep 25 2017 09:44
@pejg12 Precis så måste det gått till :)
Allinrep
@pejg12
Sep 25 2017 09:46
tänk på hur pythons inbyggda funktioner fungerar. str() returnerar en textsträng, den gör bara en enkel liten sak. round() skalar bort decimaler, den gör bara en enkel liten sak. såna enkla små funktioner är det vi vill flytta till marvin.py
den avancerade koden som skriver ut menyn och tolkat input ska vara kvar i main. i marvin kan vi ha en enkel lite funktion som returnerar ett citat.
den enkla funktionen ska inte kolla någon input. den ska inte göra några val. den ska bara hämta ett citat.
limy17
@limy17
Sep 25 2017 09:49
@pejg12 Hur långt sträcker sig det yttre skalet då?
Allinrep
@pejg12
Sep 25 2017 09:51
det ska skriva ut menyn, be om input och tolka input, och först när skalet vet vad användaren faktiskt vill få gjort kan vi be marvin-modulen utföra jobbet
Allinrep
@pejg12
Sep 25 2017 09:55
ja, nåt sånt, med lite finputs så att det funkar bättre
limy17
@limy17
Sep 25 2017 09:56
Och samma sak ska raderas från marvin.py?
Allinrep
@pejg12
Sep 25 2017 09:56
DRY, don't repeat yourself. :)
limy17
@limy17
Sep 25 2017 10:04
@pejg12 Nu funkar plötsligt allt annat, förutom att menyn inte visas när man kör main (som jag nyss fixat).
limy17
@limy17
Sep 25 2017 10:22
@limy17
@pejg12
Main uppdaterad: https://codeshare.io/21D0mX När jag kör main hoppar den över allt i marvin och returnerar "Press enter to continue..." som är sista raden i programmet.
limy17
@limy17
Sep 25 2017 10:34
Marvin.py fungerade ju nyss, så det måste väl bara vara ngt litet problem?
Allinrep
@pejg12
Sep 25 2017 11:46
som sagt, att importera en modul i marvin fungerar inte som att inkludera en fil i php
ingenting i marvin ska köras automatiskt
meningen är att du ska kalla på funktioner i marvin bara när användaren har valt något i menyn
limy17
@limy17
Sep 25 2017 12:05
@pejg12 Ok, men varför fungerar inte menyn längre?
Allinrep
@pejg12
Sep 25 2017 12:06
det vet inte jag, jag har aldrig sett den fungera :)
tänk efter vilka ändringar du gjorde mellan när det fungerade och när det inte fungerade längre
det är en hangout igång på måndagseftermiddagar (aka nu)
limy17
@limy17
Sep 25 2017 12:08
Jag flyttade ju bara meny-funktionen till att ligga i main istället.
Allinrep
@pejg12
Sep 25 2017 12:09
hm, vilken fil startar du i terminalen? du ska köra programmet med python3 main.py
limy17
@limy17
Sep 25 2017 12:12
Jag gör det
Allinrep
@pejg12
Sep 25 2017 12:14
då är det något med menyfunktionen du flyttade på
limy17
@limy17
Sep 25 2017 12:22
Main ser ut såhär nu: https://codeshare.io/21D0mX
Är inte klar med koden för quotes än, försöker göra ngt. liknande där som för marvin
Allinrep
@pejg12
Sep 25 2017 12:24
följ koden, rad för rad, och tänk efter vad som händer på varje rad
använd print() lite här och där för att se var du hamnar
när du kör main.py, kan du då se "Marvins Backpack game!" eller når koden aldrig den printen?
limy17
@limy17
Sep 25 2017 12:26
Jo då, först hoppar den till sista raden i mitt marvin program, sen går den vidare till resten
Menyn visas aldrig för marvin.py
Allinrep
@pejg12
Sep 25 2017 12:27
vilken kod är det som borde visa menyn?
limy17
@limy17
Sep 25 2017 12:28
Det är funktionen menuMenu() som ligger överst i main, och anropas direkt efter
Allinrep
@pejg12
Sep 25 2017 12:28
sätt en print på raden precis ovanför anropet då, print("nu borde jag se menyn")
limy17
@limy17
Sep 25 2017 12:30
Efter att jag kört programmen som anropas efter menyn, visas menyn?
Fast den anropas före!
Allinrep
@pejg12
Sep 25 2017 12:31
har du lagt in en ny print, och ser du den?
limy17
@limy17
Sep 25 2017 12:32
Kan det bero på att funktionerna anropas så här för quotes?
'''import quotes
quotes.citat_Marvin()
quotes.backpack()'''
Allinrep
@pejg12
Sep 25 2017 12:33
låter rimligt, det beror på vad som händer där inne
limy17
@limy17
Sep 25 2017 12:37
Blev ingen skillnad när jag tog bort det
.function alltså
På något sätt går main direkt till marvin, och kör den filen, istället för att först visa menyn...
Allinrep
@pejg12
Sep 25 2017 12:40
jag sa nog fel förut, att importera en modul är nog kanske visst samma som att importera en fil i php. men du är inte menad att ha något som händer av sig själv inne i marvin.py
limy17
@limy17
Sep 25 2017 12:40
Jobbar på det :)
Allinrep
@pejg12
Sep 25 2017 12:40
det ska inte hända något när man kör import marvin, annat än att funktionerna blir tillgängliga. har du kod som ligger utanför funktioner så blir det struligt.
limy17
@limy17
Sep 25 2017 12:41
ok, testar att indentera sista raden då...
Menyn kommer upp sist iaf, och med felmeddelanden som detta för varje menyval: NameError: name 'choiseQ' is not defined
Allinrep
@pejg12
Sep 25 2017 12:44
har du definerat en funktion choiseQ någonstans då?
limy17
@limy17
Sep 25 2017 12:45
Ja, i marvin, som importerats till main.
Allinrep
@pejg12
Sep 25 2017 12:45
då går vi tillbaka till https://dbwebb.se/kunskap/moduler-i-python :)
Har inte allt från marvin redan importerats till main om man skrivit import marvin där?
Allinrep
@pejg12
Sep 25 2017 12:48
jo men main vet inte var det finns
det är som att be någon slå upp sida 7 i boken. det hjälper inte mycket om man inte vet vilken bok det handlar om.
limy17
@limy17
Sep 25 2017 12:49
Behöver jag importera alla funktioner, en efter en, manuellt också?
Allinrep
@pejg12
Sep 25 2017 12:49
nej, kolla i modulguiden, där finns svaret
limy17
@limy17
Sep 25 2017 12:51
Det är så jag tolkar det som står där...
Ska jag lägga till den mapp som filen ligger i, även fast det är samma som main ligger i?
Allinrep
@pejg12
Sep 25 2017 12:52
du ska bara använda en punkt
precis som du gjorde förut
limy17
@limy17
Sep 25 2017 12:53
efter import marvin"."
Eller framför alla funktioner?
lewenhagen
@lewenhagen
Sep 25 2017 12:58
@limy17 varje funktion kallar du på med marvin.funktionsnamn()
limy17
@limy17
Sep 25 2017 13:01
ok :) Men varför hamnar marvin programmet sist, när det anropas först?
Allinrep
@pejg12
Sep 25 2017 13:04
finns lite fler sätt att importera i manualen https://docs.python.org/3/tutorial/modules.html#more-on-modules om du vill slippa skriva modulens namn framför varje funktion
limy17
@limy17
Sep 25 2017 13:05
@pejg12 Ok, tack
limy17
@limy17
Sep 25 2017 13:21
@pejg12 Nu tycker jag själv att jag borde vara så pass klar med detta att det ska fungera, men istället för att köra main rad för rad som jag skrivit det, startar datorn automatiskt programmen, utan att användaren får välja detta. https://codeshare.io/21D0mX
qara17
@qara17
Sep 25 2017 15:32
kan någon hjälpa mig med att tänka hur jag ska lösa nu denna uppgift, man varken hittar exempel på hur dessa typ av uppgifter man löser i boken eller när man googlar, någon som vet var man kan läsa om exempel koder. https://codeshare.io/5QO7Oe
Robert Larsson
@Gutzcode
Sep 25 2017 16:03
Om jag har samma imports och variablar i flera funktioner, finns det något sätt att återanvända dom eller måste jag importera och deklarera dem i varje funktion?
Mikael Roos
@mosbth
Sep 25 2017 16:15
importera gör du överst i filen, direkt under docstringen, inte i varje funktion.
Robert Larsson
@Gutzcode
Sep 25 2017 16:16
Överst i filen med funktionerna eller i filen som callar funktionerna?
Murat
@muratkugic
Sep 25 2017 16:17
Halloj, jag är i kmom04 marvin sista uppgiften (https://dbwebb.se/uppgift/din-egen-chattbot-marvin-inventarie) och får följande fel: "IndexError: list index out of range". har försökt slimma ner codesharet så det blir översiktligt + hela felmeddelandet är där https://codeshare.io/Gbwwbw
tacksam för all input jag kan få
Daggerby
@Daggerby
Sep 25 2017 16:18
https://codeshare.io/aJPzvy Någon som kan assistera lite? Vet inte hur jag ska komma vidare. Gäller drop delen i marvins ryggsäck
Mikael Roos
@mosbth
Sep 25 2017 16:30
@Gutzcode överst i de filer där import behövs. Import är lokal per fil.
Robert Larsson
@Gutzcode
Sep 25 2017 16:38
@mosbth ok! Hur är det angående variablar? Kan man skapa någon typ av global variabel som man kan använda inne i sina funktioner i sin modul?
@Daggerby Jag försökte också med r+ först men fick inte det att funka. Gick bättre efter att jag skrivit om så att jag öppnar å läser datan ur filen å sen stänger den. Arbetar med datan i minnet och sen skriver datan till filen när den är färdigbehandlad
limy17
@limy17
Sep 25 2017 16:53
@mosbth Är på uppg. marvin i kmom04. Nu tycker jag själv att jag borde vara så pass klar med detta att det ska fungera, men istället för att köra main rad för rad som jag skrivit det, startar datorn automatiskt programmen, utan att användaren får välja detta. main.py: https://codeshare.io/aJPy6Z
qara17
@qara17
Sep 25 2017 17:34
ngn som kan titta på denna kod, vad saknas https://codeshare.io/5QO7Oe
danijoha
@danijoha
Sep 25 2017 17:38
@qara17 Du verkar ha glömt att göra Use the in_range function to check if the value is between 50 and 100. Och sedan ska resultatet tilldelas till variabeln ANSWER, nu printas bara värdet ut. Det där om inside och outside verkar dock en aning förvirrande - inte säker på att jag förstår vad som avses där...
qara17
@qara17
Sep 25 2017 17:47
for m in c:
if m > 50 and m < 100:
c2.append(m)
return c2 ### ska man använda range function istället för 'for loop med if statment'
danijoha
@danijoha
Sep 25 2017 17:57
@qara17 Operatorn in kan användas för att testa om ett värde finns med i en lista, tupel, mängd eller en s k iterable. range-uttrycket ger nog en iterable om jag minns rätt.
@qara17 Förresten så kanske in_range refererar till en funktion du skrivit tidigare i samma fil? Använd den istället då.
qara17
@qara17
Sep 25 2017 18:04
skapade en ny lista och gjorde .append av begärda värden i den nya listan från den den första listan som skapades för att multiplicera alla värden i range function
liacost2003
@liacost2003
Sep 25 2017 18:38
image.png
Hej alla! Jag är i början av inventory uppgiften i kmom04. Hur kollar ni om er fil är tom? Jag gör så men det fungerar inte
Robert Larsson
@Gutzcode
Sep 25 2017 18:39
@liacost2003 jag importerade os och kollade filstorleken. Om filen är 0 så är den tom
liacost2003
@liacost2003
Sep 25 2017 18:39
ok, har försökt på det sättet men lyckades inte så bra, ska försöka igen
Robert Larsson
@Gutzcode
Sep 25 2017 18:40
@liacost2003
import os
with open(filename, "a") as inventory:
        if os.stat(filename).st_size == 0: # Checks if file is empty
Funkade för mig
liacost2003
@liacost2003
Sep 25 2017 18:41
och detta har du skrivit i marvin eller i main?
Robert Larsson
@Gutzcode
Sep 25 2017 18:42
i min modul (marvin).
liacost2003
@liacost2003
Sep 25 2017 18:42
tack, ska se om jag lyckas :)
Robert Larsson
@Gutzcode
Sep 25 2017 18:42
Lycka till!
liacost2003
@liacost2003
Sep 25 2017 18:48
min fil verkar inte vara tom
Robert Larsson
@Gutzcode
Sep 25 2017 18:49
Hur tömmer du den?
liacost2003
@liacost2003
Sep 25 2017 18:49
hmhm...
har hittills inte skrivit nåt i den
är det pga att filen innehåller \n?
Robert Larsson
@Gutzcode
Sep 25 2017 18:52
Gör den det så är den ju inte tom, så låter rimligt att det beror på det.
om du skapar den genom bash-kommandot touch touch filename så skapad den bara en helt tom fil. Ett bra sätt att garantera att den är tom
liacost2003
@liacost2003
Sep 25 2017 18:54
alright, tack för tipset. jag har i min första lösning använt line.rstrip(), men det hjälpte inte så mycket
finns det nåt annat sätt att bli av med \n förutom touch kommandot då?
Robert Larsson
@Gutzcode
Sep 25 2017 18:59
Du menar vid själva tömningen av ryggsäcken?
liacost2003
@liacost2003
Sep 25 2017 18:59
nej, i allra första början
Robert Larsson
@Gutzcode
Sep 25 2017 19:00
Ja, bara att högerklicka och skapa en fil borde också göra så.
liacost2003
@liacost2003
Sep 25 2017 19:01
det är så jag gjort, men filen är inte tom...
Robert Larsson
@Gutzcode
Sep 25 2017 19:02
Hmm, tycker den borde vara det. Om du står i kurskatalogen och kör ls -lha så är storleken alltså inte 0?
liacost2003
@liacost2003
Sep 25 2017 19:03
storleken är 3