25 svar
322 visningar
Qetsiyah 6503 – Livehjälpare
Postad: 26 aug 2020 17:39 Redigerad: 26 aug 2020 17:41

Något fungerar inte med min klinik hjälp mig

Jag tog denna snutt från Codecademy, de använder python 2 medan min egna interpreter (eller vad det kallas) är python 3. Jag vet inte vad som är fel. Originalkoden hade inte ens parantes efter print, men det fixade jag.

Laguna 28468
Postad: 26 aug 2020 17:46 Redigerad: 26 aug 2020 17:47

De tre viktigaste skillnaderna mellan Python 2 och 3:

print är inte ett nyckelord längre, utan en vanlig funktion som behöver parenteser

input evaluerar inte längre det man matar in, och därmed behövs och finns raw_input inte längre

/ för att dividera heltal ger nu ett flyttal. Om man vill ha den gamla operatorn så heter den //

Qetsiyah 6503 – Livehjälpare
Postad: 26 aug 2020 17:48 Redigerad: 26 aug 2020 17:51

Ja... så om jag vill få detta att fungera då?

Det man svarar, vilken parantes åker den in i?

".lower", är det för att if-villkoren är capital sensitive?

Jroth 1191 – Fd. Medlem
Postad: 26 aug 2020 17:53

raw_input heter bara input i py3, Byt ut till

input("type left or right:").lower()

Qetsiyah 6503 – Livehjälpare
Postad: 26 aug 2020 18:06

Kan ni svara på mina frågor?

Det fungerade när jag ändrade som du sa Jroth.

Kallas "clinic" för en funktion?

Varför finns "clinic" på rad 12 och 14? Varför inte bara 14?

Jroth 1191 – Fd. Medlem
Postad: 26 aug 2020 18:17 Redigerad: 26 aug 2020 18:19

Svaret åker inte in i en parentes, det åker in i answer, dessutom gör vi om det till små bokstäver som du noterade. På det sättet spelar det ingen roll om vi stavar med små, stora eller alternerande små/stora bokstäver.

Clinic är en funktion

Först definieras funktionen (rad 2-12)

Sedan anropas den (clinic() på rad 14)

Om du skriver något som inte plockas upp av if satserna (right or left) kommer programmet skriva ut "du skrev varken left or right" sedan anropas funktionen igen clinic() på rad 12 (evig loop).

Qetsiyah 6503 – Livehjälpare
Postad: 26 aug 2020 18:37 Redigerad: 26 aug 2020 18:38

Åh, jag tänkte inte tillräckligt noggrannt, den låg ju under "else"!

I python, spelar tab mycket stor roll eller är det kosmetika? Tex att "else" är "under" "def".

 

Men jag tycker att det är fult att printa alltihop igen (you just entered...), hur kommer jag omkring det?

Laguna 28468
Postad: 26 aug 2020 18:43

Indentering är centralt i Python. Man använder inte klamrar som i andra språk. 

Varför inte läsa en introduktion till språket? 

Qetsiyah 6503 – Livehjälpare
Postad: 26 aug 2020 18:51 Redigerad: 26 aug 2020 18:54

Isåfall, vilken bra uppfinning, indent gillar jag!

Jo jag gör det just nu, eller jag förbereder mig, det börjar nästa vecka. Jag är jättedålig på det här så jag måste förbereda mig. Sem är det kanske inte en nyhet för er på PA att jag inte gillar det heller. Det verkar dock vara på vändningsvägen, det är lite granna kul.

Men det känns hela tiden som att jag famnar i mörker, även med mina utmärkta googlekunskaper. Jag bruteforce testar allt tills det fungear. Precis som när jag lärde mig själv hur man skrev latex.

Laguna 28468
Postad: 26 aug 2020 19:00

Dokumentationen på python.org är bra. Sen kan man googla på specifika problem när det behövs. 

Qetsiyah 6503 – Livehjälpare
Postad: 26 aug 2020 19:15

Jag ska kolla på den, tack till dig och tack Jroth

Qetsiyah 6503 – Livehjälpare
Postad: 29 aug 2020 21:20 Redigerad: 29 aug 2020 21:24

Jag blir jättefrustrerad, våra föreläsare är kassa och tror att vi alla har förkunskaper i allt och de pratar för snabbt och våra inlämningsuppgifter har korta oförklarande instruktioner och de ger ingen bakgrundsinformation till något de förklarar. Jag fattar ingenting och hatar att inte fatta nånting. Det enda jag gör är att knappa tills något händer och vet inte hur jag googlar det jag undrar eftersom jag inte vet vad som är problemet. Jag kastas omkring i en tvättmaskin. Känslolösa ankmammor som hoppar ner för niagrafallen och fortsätter utan att kolla bak efter ungarna. Om detta är det folk känner om matematik är det inte alls konstigt att de inte gillar ämnet. Det här är jag:

https://youtu.be/9Ah4tW-k8Ao

Vad ska jag göra?

Laguna 28468
Postad: 30 aug 2020 05:05

Visa en sån där inlämningsuppgift med dess oförklarande instruktioner så ska vi se vad som borde behövas för kunskap och var du hittar den.

Kursen har precis börjat, antar jag. Vad står det i kursbeskrivningen att det antas för förkunskaper i programmering i allmänhet och Python i synnerhet? Hur förmedlas den information som du förväntas ta till dig för att lösa uppgifterna? (bok, föreläsningar, kompendier, etc.) Är det den enda programmeringskursen just nu?

Qetsiyah 6503 – Livehjälpare
Postad: 30 aug 2020 08:36 Redigerad: 30 aug 2020 09:34

Kursen heter datorintroduktion och är 1,5 hp och frivillig (egentligen inte alls frivillig för om man inte går den så kommer man inte klara den obligatoriska programmeringskursen). Kursen består av två moment: lära sig terminalen och lära sig git, nu är jag redan färdig med inlämningsuppgifterna för båda momenten, jag beskrev min frustration i efterhand. 

Ingen bok, bara föreläsningar. Antar inga förkunskaper (men det är den största lögnen jag har hört). Föreläsaren skärmdelar och basically gör inlämningsuppgiften på sin dator. Han är doktorand, och det är en till person som hänger med. De pratar mer med varandra än vad de pratar till oss studenter. 

  1. De förklarade inte vad "UNIX-like system" var och vad det sprlar för roll.
  2. De säger inte att ubuntu ÄR en sorts terminal, hur ska jag vet det som vilsen student?
  3. De skriver ingenting om vad terminalen gör och vad det är för nåt, bara att vi kommer använda det i denna kurs. Det är en extremt stor miss. 
  4. De förklarade INGTING om vad det innebar att ssh, och vad det innebär att "vara på" ett system remotely. Som tur var förstod jag det för att jag hade ssh tidigare.
  5. "If you run windows without WSL", va? skriv inte om det alternativet om du uppmanade alla att aktivera WSL i steget innan!!! Och så sidetrackar han med lite instruktioner om putty.
  6. Instruktionen "just run blabla and log in with your" är fel. Man skulle skriva ssh sin-kth-mail@studentshellsyskth.se. 

Vi bara kastades in i det här, ingen bakrundsinformation. Det finns säkert folk med ännu mindre, kanske bokstavligen noll tidigare erfarenhet, hur ska de klara sig? 

There are several options for accessing a UNIX-like terminal. We’ll cover (1) running it on your own system, (2) using a KTH system remotely.

1) och 2) är väl snarare vad en kommandotolk kan göra, inte hur man accessar den? Accessar den har man ju gjort när man öppnat den. Sånna här små formuleringar spelar stor roll när man inte ens vet vad en terminal är för nåt.

Nåt sånt här vore bra om de förklrade: https://amp.reddit.com/r/learnprogramming/comments/6xr0l9/whats_the_difference_between_terminal_shell/

Smaragdalena Online 78170 – Lärare
Postad: 30 aug 2020 09:39

På Chalmers är det studenter, inte doktorander som leder introduktionskurserna i programmering. De har förhoppningsvis inte glömt hur det är att komma ny till programmering.

För länge sedan fanns det två olika operativsystem för datorer: Unix och DOS. MacOS och Linux bygger på Unix, Windows bygger på DOS. Det är enklare för unix-baserade operativsystem att kommunicera med varandra än med DOS-baserade datorer.

Ubuntu är en distribution av Linux (det finns många andra också). De visar bilder av hur ett terminalfönster ser ut i bild 2 och 3.

De ger två möjligheter att komma åt terminalen: antingen på din egen dator, eller KTH:s dator. Om du vill använda din egen dator är det enkelt om du har Linux eller Mac, men om du har Windows kan du installera Linux inuti. Om du inte vill använda din egen dator är det enkelt om du har Linux, Mac eller har installerat WSL, men om du inte har gjort det går det ändå på ett lite krångligare sätt.

1) och 2) är instruktioner för hur du kommer åt terminalen (d v s kommandorutan där du skriver in dina instruktioner) på 1) din egen dator respektive 2) på KTH:s dator. Paragraferna säger ingenting om vad du kan göra med datorn, utan hur du kommer till startplatsen så att du kan börja ha roligt. Formuleringen att 1) och 2 hjälper dig att accessa terminalen är helt korrekt. Däremot är det uselt att de inte förklarar vad terminalen är. Att det heter så har en historisk förklaring: förr i tiden kommunicerade man med den centralt placerade stordatorn genom en terminal (ännu tidigare stansade man hålkort och gick med dem till stordatorn, där någon matade in dem rent fysiskt).

SaintVenant 3831
Postad: 30 aug 2020 09:47

Sannolikt är den obligatoriska kursen bättre utformad även om allt CS-relaterat jag läst (Python, C, Fortran) har präglats av icke-pedagogiska filurer. Fascinerande ändå att en introduktion är så objektivt gräslig.

Har du kommit in på ett annat program än Bioteknik eller vad det var nu?

Laguna 28468
Postad: 30 aug 2020 10:01

Jag tänkte inte på att det är distansundervisning som gäller nu. De har förmodligen satt ihop det här för att det ska fungera med distansaccess, och det är första gången, så det är inte konstigt om inte allt fungerar bra. Det finns säkert personer bakom kursen som är mycket intresserade av att få veta vad som fungerar dåligt. Om det är samma personer som håller kursen vet jag inte.

De hade lätt kunnat skriva ett par sidor om de nya begrepp som de introducerar, och de borde ha gjort det, tycker jag. Det skulle ge mer värde åt kursen också.

Jag minns att jag kände mig rätt vilsen precis i början. Någon hade visserligen ansträngt sig och skrivit ett kompendium där det beskrevs var man kunde "vara" i systemet, som olika rum som man gick till genom att skriva olika saker. Just terminal behövde inte förklaras på den tiden, som Smaragdalena skriver, det var en tjock-TV med tangentbord och sladd. Men alla dessa "rum" drömde jag mardrömmar om ett tag att jag gick vilse i.

Qetsiyah 6503 – Livehjälpare
Postad: 30 aug 2020 11:22 Redigerad: 30 aug 2020 11:27

Smaragdalena: kallade du in specialstyrka i form av din son? tack till båda er

Ebola: ja, läraren för den kommande obligatoriska kursen har sagt att de ändrat från förra året då de insåg att nivån var för hög. Jag har egentligen inget emot att kursen är proppad och hög takt (då betyder det ju att jag lär mig mycket), bara läraren ordnar så att det finns förklaringar och material för att underlätta. "Hjälp till självhjälp".

Laguna: det känns som att deras fokus är att det att funka, inte lära oss varför det funkar, det är jättedåligt. I någon annan uppgift med att fixa git sa de att vi skulle klistra in keygen -s 4067 rsa -C eller nåt, tilläggen efter själva kommandot betyder ju något, men det säger de inte vad det är. De förklarar inte ens vad en nyckel är för nåt, och vem som ska ha den och vem som skapar den osv. Det är ju både intressant och lärorikt att få veta... Det med att programmering är en kreativ verksamhet dödar de totalt. Hur ska jag programmera om jag själv blir en robot? Det är exakt samma som när folk tror att matte "bara är formler". Usch!

Sen ska jag tillägga att de inte ens sa att det fanns ett help kommando, men det råkade jag veta sen innan. Utan den hade jag inte klarat mig. Tänk bara hur det är för de som inte vet om det. 

Hondel 1289
Postad: 30 aug 2020 11:36 Redigerad: 30 aug 2020 11:59
Qetsiyah skrev:

Åh, jag tänkte inte tillräckligt noggrannt, den låg ju under "else"!

I python, spelar tab mycket stor roll eller är det kosmetika? Tex att "else" är "under" "def".

 

Men jag tycker att det är fult att printa alltihop igen (you just entered...), hur kommer jag omkring det?

Du kan, efter answer = input(......., men innan if-satserna lägga till en så kallad while-loop i stil med

while answer is not "right" and answer is not "left":
     print("You didn't pick right or left! Try again!")
     answer = input().lower()

Första raden betyder att kommande två rader ska köras så länge answer inte är varken "right" eller "left". Ett felmeddelande skrivs ut, sen får användaren skriva in något nytt som hamnar på "answer". Och loopen kör som sagt tills det användaren skriver in är "right" eller "left". När det är uppfyllt fortsätter koden. Edit: det jag menade med "fortsätter koden" är att programmet går vidare till det som är efter loopen (i det här fallet, if-satserna)

Den första raden i loopen kan såklart tas bort om strängen "You didn't ..." läggs som argument till input()

Laguna 28468
Postad: 30 aug 2020 12:29

Förlåt att jag kör över svaret på Python-frågan. Det här kanske borde vara två trådar.

 


Operativsystemet i en dator (ofta uttalat OS = o-ess) är programmet
som finns där när man startar datorn, och som sköter allt som behövs
för att användarens program ska fungera.

Före Unix fanns det en hel del andra operativsystem. Operativsystemet
Unix (och sen språket C, fast Unix var inte skrivet i C från början)
skrevs som en reaktion på väldigt klumpiga operativsystem och språk,
och blev sedan det populäraste altrernativet för universitet. Windows
kom senare, och höll som namnet antyder mest på med fönsterbaserade
program, inte kommandon i en kommandotolk, vilket är Unix' styrka.

Så programmering och programutveckling lärs mest ut i Unix-lika
miljöer. Unix rätt och slätt kan man inte säga längre, eftersom Linux
har kommit in i bilden. Det är en sorts Unix, och är numera så
populärt att folk använder namnet Linux mer än Unix. Några alternativ
till Linux finns, om man vill hålla på med ett fritt OS: FreeBSD,
t.ex., som bygger på en variant av Unix som gjordes på Berkeley och
hade namnet BSD. De kommersiella Unixarna som fanns en gång används
nog inte mycket längre, men man kan t.ex. träffa på SunOS och Solaris
(på företag eller universitet som tycker det fungerar bra och inte
vill byta).

Ubuntu är inte en terminal. Ubuntu är en variant av Linux, en
distribution, vilket innebär att man har valt en uppsättning program
som man tycker passar och har packat ihop dem till något som man kan
ladda ner och köra. Skillnaden mellan olika Linux-distributioner
(RedHat är t.ex. en annan) syns mest i de grafiska gränssnitten och i
hur man gör för att installera nya program (är mitt intryck, men jag
kan ha fel).

Terminal är alltså ändpunkten för kommunikationen med användaren
(vilket är anledningen till att den heter så). I någon mening är
alltså hela din dator en terminal när du kommunicerar med KTH, men man
brukar mena ett fönster (som då heter terminalfönster) som är kopplat
till en kommandotolk (också kallat "shell" i Unix-världen), så att det
du skriver på tangentbordet när terminalfönstret har fokus hamnar hos
kommandotolken.

Ett program som kontrollerar ett terminalfönster och en kommandotolk
kallas terminalemulator. Emulera betyder att (troget) efterlikna
funktionen hos något. Simulera betyder oftast bara att efterlikna en
viss aspekt hos något. (Man kan t.ex. simulera en atombomb på olika
sätt, men man vill inte emulera den.)

Det finns flera olika terminalemulatorer. Dels brukar varje
Linux-distribution ha sin egen, som de tycker är bäst, dels finns det
klassiska som fanns före Linux, t.ex. xterm. En som följer med
fönsterhanteraren Gnome (som t.ex. ingår i Ubuntu) heter
gnome-terminal. Ofta finns det något sätt att starta en
terminalemulator genom att klicka i menyerna i fönsterhanteraren.

Det man vill uppnå med hela övningen är att kunna köra
Linux-kommandon. Tydligen går det bra på ens egen dator, men om man
inte har Linux själv, eller om det man har inte är tillräckligt likt
KTH:s system, så kan man koppla sig till KTH:s system (med ssh, t.ex.)
så att det man skriver i terminalfönstret på datorn får kommandon att
utföras på KTH:s system. Förmodligen har man python själv, men kanske
inte matlab.

Jag förmodar att om man får underliga problem när man använder sin
egen Unix-lika miljö (som kan vara Unix-subsystemet för Windows,
vilket inte är Linux) och frågar om dem, så får man svaret att prova
på KTH:s system. Vill man sen fixa så att det funkar hos en själv så
kan det vara allt från trivialt till omöjligt. Vi får se. Men det är
en poäng i att ha ett väldefinierat system som man vet att studenterna
kan använda.


Oförklarade ord hittills: fokus, fönsterhanterare, kommandotolk.

Ja, "accessing a terminal" låter konstigt.

Få se om jag orkar skriva mer, t.ex. om ssh.

Qetsiyah 6503 – Livehjälpare
Postad: 30 aug 2020 12:39 Redigerad: 30 aug 2020 13:19

Okej så min terminal kommunicerar med en shell på KTH (den heter student-shell haha), shellen tolkar mina kommandon och utför de på KTHs server?

KTH har ju datorsalar. Om jag satt vid en KTHdator och inloggad på mitt personliga konto, skulle jag kunna använda windows fönstergränssnitt för att skapa och redigera filer som vanligt istället? Så utan corona och distansundervisningen har jag ingen användning av att lära mig allt detta?

Ubuntu är inte en terminal.

Okej men varför heter själva terminalfönstret "ubuntu" då? När jag installerar ubuntu är ubuntu det enda programmet jag får.

Jag förstår ssh och kommandotolk!

Hondel: tack, det var intuitivt förklarat

Aerius 504 – Fd. Medlem
Postad: 30 aug 2020 12:51

Med programmering blir det mycket enklare att göra uträkningar. Stora fördelen med en terminal som jag ser det är det är väldigt lätt att beskriva kommandona till någon annan, eller spara kommandon åt sig själv till ett senare tillfälle.

Smaragdalena Online 78170 – Lärare
Postad: 30 aug 2020 13:05

Smaragdalena: kallade du in specialstyrka i form av din son? tack till båda er

Nej, så pass mycket har jag snappat upp själv. Vem som helst av dem hade säkert kunnat förklara det (ännu) bättre.
 

Laguna 28468
Postad: 30 aug 2020 13:18

Varför ditt terminalfönster heter Ubuntu vet jag inte. Man kan välja det när man startar det och ändra senare. I bilderna ovan står det Terminal, är det där det står Ubuntu hos dig? 

Smaragdalena Online 78170 – Lärare
Postad: 30 aug 2020 15:15

På den andra raden med vit text på svart botten på bild 2 står det "Welcome to Ubuntu (massasiffror och annat tjafs)" Är det det du menar?

Laguna 28468
Postad: 30 aug 2020 18:04

De första av de massa siffrorna kan vara en smula intressanta, de säger att vi kör Ubuntu version 18.04. Men de blir nog intressanta först när man ska felsöka ett problem.

Den här texten säger i princip "välkommen till operativsystemet Ubuntu". Man får den när man loggar in, men inte om man startar nya terminalfönster.

Svara Avbryt
Close