These are chat archives for dbwebb-se/python

1st
Oct 2017
Brian Welch
@brian-welch
Oct 01 2017 04:45
@jorisdebom För mig, jag skickade 'option' som en variable in i funktioner. Och då svaren från funktionerna ändrar sig baserad på options värde
t.ex
if comand ="letters":
    analyzer.function(option, other_variable, another_variable)
Joris Bomert
@jorisdebom
Oct 01 2017 06:58
din verbose, och silent, har du beskrivit de i din funktion också? eller i main?
Brian Welch
@brian-welch
Oct 01 2017 07:14
Första drar jag ut resultaten av verbose och silent från den parser dictionary. i min code sparar det som en tuple: (True, False), till exempel. Sedan baserade på combination of True eller False skapar jag en option variable - fortfarande i main filen.
så (Ture, False) betyder det var en verbose option [jag hade verbose första i parser]
(False, True) betyder silent, och (Fasel, False) betyder 'normal'
Brian Welch
@brian-welch
Oct 01 2017 08:05
Kan nån förklara för mig varför att 'known arguments' måste ha vars() omkring det men inte 'unknown arguments' - i CLI parser filen: när man skapar dictionary?
fblanke
@fblanke
Oct 01 2017 08:22

Har ett problem med marvin3 som någon kanske kan hjälpa mig med.
Har koden
'''
elif "quote" in choice:
print("Okay, how about this quote?")
marvin.give_a_quote()
'''

Och får detta felet

AttributeError: module 'marvin' has no attribute 'give_a_quote'
elif "quote" in choice:
print("Okay, how about this quote?")
marvin.give_a_quote()
Brian Welch
@brian-welch
Oct 01 2017 08:23
verkar som function give_a_quote() finns inte i 'marvin' filen/module
fblanke
@fblanke
Oct 01 2017 08:25
Vilket den absolut gör. Ser ut så här:
def give_a_quote():
    """
    A function to return a random quote
    """
    print("In marvin quote")
    quote = linecache.getline("quotes.txt", random.randrange(1, 11))
    print("Have read the line")
    print(quote)
I filen marvin
Och det funkar för alla andra metoder där
Brian Welch
@brian-welch
Oct 01 2017 08:25
hmmmmmm......
fblanke
@fblanke
Oct 01 2017 08:26
Men den kommer inte ens in i give_a_quote i marvin
Det funkar om jag kör direkt från main, men då måste jag importera allt är och det känns inte som en lika snygg lösning
Brian Welch
@brian-welch
Oct 01 2017 08:27
var finns din elif "quote" in choice: statement?
i 'main' va?
fblanke
@fblanke
Oct 01 2017 08:29
mm
Och den raden funkar som den ska. Iaf när jag bara testar med en print. Det är när den ska köra just marvin.give_a_quote
Brian Welch
@brian-welch
Oct 01 2017 08:31
ah vänta har du öppnat filen?
fblanke
@fblanke
Oct 01 2017 08:31
quotes.txt?
Aha
Vänta bara för du sa det såg jag nu....
Brian Welch
@brian-welch
Oct 01 2017 08:32
ja: t.ex. i min function, jag har: f = open("quotes.txt")
fblanke
@fblanke
Oct 01 2017 08:32
Åhh detta alltså
Insåg nu att jag sitter i filen marvin.py och ändrar. Men inte den som ligger under kmom04 under den fliken jag haft öppen från förra uppgiften....

ILoveProgrammingAndTechnicalChallenges

Suck jag testar med att skriva i rätt fil då kanske
Brian Welch
@brian-welch
Oct 01 2017 08:33
yep..... jag är medlem i denna klubb
fblanke
@fblanke
Oct 01 2017 08:34
Ja nu funkade det såklart
Brian Welch
@brian-welch
Oct 01 2017 08:34
najs
fblanke
@fblanke
Oct 01 2017 08:34
Perfekt att bygga på söndagsångest med att undra vafan man håller på med
Tack för hjälpen @brian-welch
Brian Welch
@brian-welch
Oct 01 2017 08:34
inget problem - tog en paus from php uppgifterna
Allinrep
@pejg12
Oct 01 2017 09:10
@brian-welch jag var också nyfiken på vars() och undersökte. testa att köra print( type(args) ) och print( type( vars(args) ) ) så ser du lite skillnad.
Xelect
@Xelect
Oct 01 2017 09:20
håller på med marvins citatgenerator i kmom04 och har fastnat
försöker göra om hela raden i quotes.txt till en lista genom lineaslist = line.split('.'), men när jag sen kör print på lineaslist så säger den bara att lineaslist är odefinierad
men om jag inte sätter in print så trycker den ut den första quoten i listan, varje gång jag skriver in det i input
Allinrep
@pejg12
Oct 01 2017 09:22
låter som en felstavad variabel
Xelect
@Xelect
Oct 01 2017 09:24
det var det nog ja... men print visar nu att jag bara får in allt innan första punkten genom line.split()
Allinrep
@pejg12
Oct 01 2017 09:29
@Edugolr argparse kollar bara vad du skriver i terminalen på samma rad som när du startar programmet. inuti programmet får du använda något annat för att ta emot kommandon, kanske likt det du har gjort i tidigare kursmoment.
Xelect
@Xelect
Oct 01 2017 09:46
använder for y in range(len(x)): i extrauppgifterna för kmom04 (som det står i boken, och fått rätt resultat) men pylint ger mig felet: Consider using enumerate instead of iterating with range and len (consider-using-enumerate). Går det att komma förbi detta? Om jag använder enumerate istället får jag felet att jag måste ha index som integer, inte tupler
Allinrep
@pejg12
Oct 01 2017 09:47
det är inte ett fel, det handlar om att man behöver hantera enumerate lite annorlunda bara
enumerate returnerar två saker samtidigt, så det räcker inte med bara y
for i, y in enumerate(blabla)
Xelect
@Xelect
Oct 01 2017 09:51
men hur hanterar man det i indexutbytena i sånt fall?
och varför är det att föredra framför range(len(x))?
Allinrep
@pejg12
Oct 01 2017 09:53
det är mer pythonic skulle jag gissa på. troligtvis bättre hanterat i bakgrunden.
indexutbytena? vad menar du med det?
min funktion ser ut sådär just nu, förstår inte hur jag ska ändra elementen i for-loopen för att ta hänsyn till att det är tupler istället för bara ett integer-index
Allinrep
@pejg12
Oct 01 2017 09:55
läs mer om vad enumerate gör så klurar du ut det
Xelect
@Xelect
Oct 01 2017 09:55
minus "i, ", den råkade komma med
qara17
@qara17
Oct 01 2017 10:03
när jag ska validera lab 3 så får jag upp följande fel: python3 answer.py
File "answer.py", line 202
dbwebb.assert_equal("1.6", ANSWER, False)
^
SyntaxError: invalid syntax
denna ran har jag inte ens ändrat något i??
Allinrep
@pejg12
Oct 01 2017 10:03
hm, det där är en bugg. prova dbwebb update och dbwebb recreate lab3 så kanske det löser sig.
dbwebb selfupdate först också
qara17
@qara17
Oct 01 2017 10:04
mitt arbete försvinner väl int e
?
Allinrep
@pejg12
Oct 01 2017 10:04
kopiera din answer.py och lägg den någon annanstans så länge
prova att köra den nya answer.py innan du kopierar in dina lösningar
Xelect
@Xelect
Oct 01 2017 10:09
fattar jag det rätt om enumerate(x) skapar ett index bestående av (index, y) ur listan x? Kan jag i sånt fall skriva i for loopen: x[y] = y * 2?
Allinrep
@pejg12
Oct 01 2017 10:12
om första värdet i listan x är 27 så är det y=27. om du då skriver x[y] så blir det samma som x[27], men siffran har ju inte index 27.
det är första värdet i listan, med andra ord index 0. x[0] skulle funka bättre, eller x[index] i ditt fall
@qara17 funkar det nu?
qara17
@qara17
Oct 01 2017 10:16
jag håller på kopiera även mitt marvin arebte så att int det försvinner också
Xelect
@Xelect
Oct 01 2017 10:17
jag förstår verkligen inte hur man ska referera mellan listan x som argument till funktionen och tuplen som skapas i enumerate(x)
Allinrep
@pejg12
Oct 01 2017 10:18
@Xelect for i, y in enumerate(x): ger dig två variabler, den ena heter i och den andra heter y. prova att skriva ut den ena och den andra.
Xelect
@Xelect
Oct 01 2017 10:20
jo men det förstår jag, men hur får jag till att referera till t.e.x i, när jag inte har ett variabelnamn att referera till? om den skapade en variabel z hade jag ju kunnat skriva x[y] = z[i] antar jag? eller kan jag bara använda i rakt av?
qara17
@qara17
Oct 01 2017 10:20
felet kvarstår
Allinrep
@pejg12
Oct 01 2017 10:21
@Xelect variabeln i går att referera till precis som vilken annan.
qara17
@qara17
Oct 01 2017 10:21
jag körde först dbwebb uppdate , sen recreate lab 3 och sidt selfuppdate
Allinrep
@pejg12
Oct 01 2017 10:21
@Xelect du har fortfarande kvar listan x. det första värdet i listan x blir x[0], det andra värdet är x[1].
@qara17 aha, otydliga instruktioner från min sida. först selfupdate, sen de andra. nu när du har gjort en selfupdate kan du göra update och recreate igen
@Xelect
for i, y in enumerate(x):
  print("begin iteration")
  print("i:", i)
  print("y:", y)
  print("x:", x)
  print("end iteration")
Xelect
@Xelect
Oct 01 2017 10:24
nu fick jag till det, fattade inte att jag kunde använda x[i] = y * 2
qara17
@qara17
Oct 01 2017 10:25
felet kvarstår
Allinrep
@pejg12
Oct 01 2017 10:26
@qara17 istället för recreate, ta bort alla filerna inne i katalogen lab3 (ta inte bort katalogen) och kör dbwebb create lab3
Christofer Wikman
@Edugolr
Oct 01 2017 10:26
@pejg12 ok, letat som en galning, fått för mig att man skulle kunna köra kommandona i ett program som är igång. hrm bara bryta ihop o börja om ;)
@pejg12 tack för svaret, hjälper massor
Allinrep
@pejg12
Oct 01 2017 10:31
@qara17 om du kör en helt ny labb, utan att du själv har ändrat någon kod i filen alls, uppstår problemet ändå? eller är det när du lägger in din kod som det blir fel?
jag måste ut nu, hoppas någon annan kan hjälpa till
qara17
@qara17
Oct 01 2017 10:32
min kod var kvar när jag gjorde alla de uppdateringar
Allinrep
@pejg12
Oct 01 2017 10:33
jag misstolkade nog felmeddelandet, problemet ligger nog i din kod snarare än labbverktyget. kolla att du inte har missat en slutparentes elle rliknande.
Daggerby
@Daggerby
Oct 01 2017 11:11
Oftast är det i det stycket den anmärker på utan strax innan
Inte*
Xelect
@Xelect
Oct 01 2017 12:06
I kmom04, när man ska lägga till inventory-grejen till marvin.. hur fan lyckas man med att få den att tömma enstaka saker ur inventoryt? Har försökt mecka med det här i flera timmar men jag lyckas verkligen inte.
först försökte jag med att flytta hela filens innehåll till en lista, och sedan write den listan förutom det enstaka itemet jag inte ville ha med, men då verkar inget ur listan komma med till filen som skrivs.
Nathalie Waldenryd
@NathalieWaldenryd
Oct 01 2017 12:08
kan ju ge dig ett tips att jag använde for loops
Xelect
@Xelect
Oct 01 2017 12:08
jättegärna
Daniel Mattsson
@daniel-mmm
Oct 01 2017 12:22
@Xelect Om du har innehållet från filen i en lista kan du ju modifiera listan innan du sparar om den.
Xelect
@Xelect
Oct 01 2017 12:23
ja jag tyckte det, men när jag försöker köra .remove(variabeln som sparar strängen som ska tas bort) så hittar den inte motsvarande i listan
Daniel Mattsson
@daniel-mmm
Oct 01 2017 12:31
@Xelect Det borde fungera. När jag har något sånt problem brukar jag testa i interpretatorn och se att det fungerar som jag tänker mig, t.ex köra:
test = ["test"]
print(test)
test.remove("test")
print(test)
Xelect
@Xelect
Oct 01 2017 12:41
äntligen fick jag det att fungera!!
du hade rätt, jag hade bara en lb som inte syntes när jag printade som sabbade sökningen i .remove
Daniel Mattsson
@daniel-mmm
Oct 01 2017 12:42
Ah! lätt att missa
Xelect
@Xelect
Oct 01 2017 12:42
fyfan alltså, två timmar har jag bankat huvudet mot den där jävla funktionen
Prohopp
@Prohopp
Oct 01 2017 17:01
I kmom05. Hur ser koden ut för att ta reda på om verbose som optional argument skrivs med?