xeric Postad 23 november, 2016 Share Postad 23 november, 2016 Lite javascript kanske... Länk till kommentar Dela på andra webbplatser More sharing options...
Axelman Postad 23 november, 2016 Share Postad 23 november, 2016 Lite javascript kanske... javascript.png Hahaha! Jättekul! Not. Länk till kommentar Dela på andra webbplatser More sharing options...
xeric Postad 23 november, 2016 Share Postad 23 november, 2016 Hahaha! Jättekul! Not. Det är en bugg, så nej... inget kul med buggar. Men vad den gör är lite kul. Javascript from hell. Länk till kommentar Dela på andra webbplatser More sharing options...
Axelman Postad 23 november, 2016 Share Postad 23 november, 2016 Det är en bugg, så nej... inget kul med buggar. Men vad den gör är lite kul. Javascript from hell. Fattar nada. Länk till kommentar Dela på andra webbplatser More sharing options...
Alix Postad 23 november, 2016 Share Postad 23 november, 2016 Fattar nada. Skriptet räknar fel. Länk till kommentar Dela på andra webbplatser More sharing options...
xeric Postad 23 november, 2016 Share Postad 23 november, 2016 Skriptet räknar fel. Skall man vara riktigt petnoga så att den räknar ö h t som är fel. "5" är en textsträng och 2 ett tal (integer). Så, sista exemplet blir (halv-)rätt. "5" + 2 är 52, precis som "Hej" + "Hej" är HejHej Länk till kommentar Dela på andra webbplatser More sharing options...
KMN Postad 23 november, 2016 Share Postad 23 november, 2016 Skall man vara riktigt petnoga så att den räknar ö h t som är fel. "5" är en textsträng och 2 ett tal (integer). Så, sista exemplet blir (halv-)rätt. "5" + 2 är 52, precis som "Hej" + "Hej" är HejHej Men första exemplet då? Är det en beräkning? Länk till kommentar Dela på andra webbplatser More sharing options...
Axelman Postad 23 november, 2016 Share Postad 23 november, 2016 Skriptet räknar fel. Jag börjar förstå det. För mig är det siffror och tecken som betyder nada eller vad som helst. Länk till kommentar Dela på andra webbplatser More sharing options...
xeric Postad 23 november, 2016 Share Postad 23 november, 2016 Men första exemplet då? Är det en beräkning? Ja, den räknar ju “rätt” i 1'a där, men gör fel. Man kan inte blanda olika typer av värden. "5" är en sträng - så det kunde lika gärna stått "Fem". Det saknas kontroller s a s. För att bäst illustrera det (som saknas)... Om man kör samma i Python's konsol: Länk till kommentar Dela på andra webbplatser More sharing options...
KMN Postad 23 november, 2016 Share Postad 23 november, 2016 Ja, den räknar ju “rätt” i 1'a där, men gör fel. Man kan inte blanda olika typer av värden. "5" är en sträng - så det kunde lika gärna stått "Fem". Det saknas kontroller s a s. För att bäst illustrera det (som saknas)... Om man kör samma i Python's konsol: python.jpg Hur kan den ”räkna rätt” i första? Det kan ju knappast vara en slump… Och hur funkar det i Python med ”sträng till tal” som du visade – int("5")? Länk till kommentar Dela på andra webbplatser More sharing options...
Axelman Postad 23 november, 2016 Share Postad 23 november, 2016 OM man måste förklara det som är roligt, kanske det inte är så roligt. Länk till kommentar Dela på andra webbplatser More sharing options...
Mattiasgbg Postad 23 november, 2016 Share Postad 23 november, 2016 Det är en bugg, så nej... inget kul med buggar. Men vad den gör är lite kul. Javascript from hell. Det är ingen bugg, språket är tänkt att fungera så. Hur kan den ”räkna rätt” i första? Det kan ju knappast vara en slump… Och hur funkar det i Python med ”sträng till tal” som du visade – int("5")? Javascript har ett väldigt svagt typsystem, vilket enkelt uttryckt innebär att ett värdes typ (heltal, text, sanningsvärde.....) anpassas efter omgivningen. Den första raden innehåller textsträngen "5" och från den ska heltalet 2 subtraheras. Eftersom det är ganska lätt att ändra textsträngen "5" till heltalet 5 så betraktades den som ett heltal. I den andra raden tolkas plustecknet som konkatenering och omvandlar heltalet 2 till textsträngen "2". Undrar hur 5 + "2" hade tolkats? Som jämförelse kan nämnas Java, där man måste ange vilken typ ett värde har. Ex: int x = 2 String y = "5" char z = '5' I Java kontrolleras även koden innan programmet "tillverkas"; försöker du addera text med ett heltal så kommer typcheckaren undra vad fan du sysslar med. https://sv.wikipedia.org/wiki/Konkatenering Länk till kommentar Dela på andra webbplatser More sharing options...
xeric Postad 23 november, 2016 Share Postad 23 november, 2016 Hur kan den ”räkna rätt” i första? Det kan ju knappast vara en slump… Och hur funkar det i Python med ”sträng till tal” som du visade – int("5")? # Det är det som blirr “fel”. Den tar helt enkelt siffran och tolkar det som ett tal. Man får inte lura sig på "citattecknen", de syns inte när den läses sen (t ex kör i Terminal: echo "5"). Men även om resultatet av "5" visas som 5 så är det fortfarande en textsträng. Oavsett om det står "5" - 2 eller "Fem" - 2 så skall man inte kunna beräkna det. PHP gör liknande, och räknar t o m “rätt” på 2'a exemplet - även om man slår på “strict”. Men där finns lite andra funktioner så man kan validera innan man kör det så den inte kör fel. Finns sökert liknande i JS. # Man kan köra om strängen till en integer med int("5") - eftersom det är den siffra (5). Och det kan man med javascript med. Heter: parseInt(). Så konverterar man textsiffran till ett tal. Alla språk har lika/liknande funktioner. Länk till kommentar Dela på andra webbplatser More sharing options...
Axelman Postad 23 november, 2016 Share Postad 23 november, 2016 SToPP!! Detta är en HUMORTRÅD!! Länk till kommentar Dela på andra webbplatser More sharing options...
davidredjoy Postad 23 november, 2016 Share Postad 23 november, 2016 2 Länk till kommentar Dela på andra webbplatser More sharing options...
KMN Postad 23 november, 2016 Share Postad 23 november, 2016 # Det är det som blirr “fel”. Den tar helt enkelt siffran och tolkar det som ett tal. Man får inte lura sig på "citattecknen", de syns inte när den läses sen (t ex kör i Terminal: echo "5"). Men även om resultatet av "5" visas som 5 så är det fortfarande en textsträng. Oavsett om det står "5" - 2 eller "Fem" - 2 så skall man inte kunna beräkna det. PHP gör liknande, och räknar t o m “rätt” på 2'a exemplet - även om man slår på “strict”. Men där finns lite andra funktioner så man kan validera innan man kör det så den inte kör fel. Finns sökert liknande i JS. # Man kan köra om strängen till en integer med int("5") - eftersom det är den siffra (5). Och det kan man med javascript med. Heter: parseInt(). Så konverterar man textsiffran till ett tal. Alla språk har lika/liknande funktioner. Okej, den hämtar alltså de siffror som finns i texten och gör tal av dem. Så om man skriver: int("fem") händer inget (eller blir det error? På samma sätt blir: int("potatis") ingenting heller? Men om man skriver: int("p0tat15") så blir det 015? Länk till kommentar Dela på andra webbplatser More sharing options...
KMN Postad 23 november, 2016 Share Postad 23 november, 2016 Javascript har ett väldigt svagt typsystem, vilket enkelt uttryckt innebär att ett värdes typ (heltal, text, sanningsvärde.....) anpassas efter omgivningen. Den första raden innehåller textsträngen "5" och från den ska heltalet 2 subtraheras. Eftersom det är ganska lätt att ändra textsträngen "5" till heltalet 5 så betraktades den som ett heltal. I den andra raden tolkas plustecknet som konkatenering och omvandlar heltalet 2 till textsträngen "2". Men förhållandet mellan textsträng och heltal är ju 1:1 i båda fallen, men med olika resultat. Är det plustecknet och minustecknet som avgör? Länk till kommentar Dela på andra webbplatser More sharing options...
Alix Postad 23 november, 2016 Share Postad 23 november, 2016 SToPP!! Detta är en HUMORTRÅD!! Länk till kommentar Dela på andra webbplatser More sharing options...
xeric Postad 23 november, 2016 Share Postad 23 november, 2016 Okej, den hämtar alltså de siffror som finns i texten och gör tal av dem. Så om man skriver: int("fem")händer inget (eller blir det error? På samma sätt blir: int("potatis") ingenting heller? Men om man skriver: int("p0tat15") så blir det 015? Nej, den blir också fel. Men med en sånt text kan man ju alltid filtrera ut siffrorna med ngn form av regex - om man nu vill åt dem. Men alla 3 blir bara fel. Rena tal, eller tal med decimaler går att göra om från str till int (el float). Rensade ur lite meddelanden, med felen finns med: >>> int("Fem") ValueError: invalid literal for int() with base 10: 'Fem' >>> int("5") 5 >>> int("potatis") ValueError: invalid literal for int() with base 10: 'potatis' >>> int("p0tat15") ValueError: invalid literal for int() with base 10: 'p0tat15' Ett tal kan man ju alltid (omvänt) göra till en sträng med, antingen bara att sätta "" runt eller med str() >>> "potat" + 15 TypeError: Can't convert 'int' object to str implicitly >>> "potat" + str(15) 'potat15' Inte så bra exempel eftersom man skriver 15 för hand. Men om man t ex får ett värde från nåt annat ställe i t ex ett skript/program, så kanske det ser ut så här: VAR = "foobar_" + str(nr) print(VAR) # foobar_123 Länk till kommentar Dela på andra webbplatser More sharing options...
xeric Postad 23 november, 2016 Share Postad 23 november, 2016 SToPP!! Detta är en HUMORTRÅD!! Jadå... Måste väl få svara på frågorna som skrvivs i a f? Länk till kommentar Dela på andra webbplatser More sharing options...
KMN Postad 23 november, 2016 Share Postad 23 november, 2016 SToPP!! Detta är en HUMORTRÅD!! Ja. Och detta får väl nästan ses som ett typexempel på vad som NE beskriver så här: 1 Länk till kommentar Dela på andra webbplatser More sharing options...
Axelman Postad 23 november, 2016 Share Postad 23 november, 2016 Jadå... Måste väl få svara på frågorna som skrvivs i a f? Men man får inte riva av ett helt utbildningspass.... Länk till kommentar Dela på andra webbplatser More sharing options...
Mattiasgbg Postad 23 november, 2016 Share Postad 23 november, 2016 (redigerade) SToPP!! Detta är en HUMORTRÅD!! Javascript är humor. Men förhållandet mellan textsträng och heltal är ju 1:1 i båda fallen, men med olika resultat. Är det plustecknet och minustecknet som avgör? Jag kan inte alls Javascript, men... Språket verkar liksom Java använda samma symbol (plustecknet +) för två olika funktioner/operationer, nämligen addition av numeriska värden samt konkatenering av textsträngar. Då man inte måste ange en variabels typ så måste skripttolken gissa vad det handlar om, alternativt avsluta körningen, med eller utan krasch. I fallet "5" - 2 gissar jag att systemet läser texten "5" och tycker "inga problem", läser vidare och hittar en subtraktionsoperator, tycker att det där "5" kan man faktiskt tolka som 5, då kan man subtrahera. Sedan kommer 2 som enkelt kan subtraheras från 5. Allt gick bra! I fallet "5" + 2 gissar jag att systemet börjar som i det andra fallet och hittar sedan ett plustecken, som ju har två betydelser. Eftersom första operanden är en textsträng så bestämmer systemet att nu ska det konkateneras text. Sedan dyker 2 upp, en siffra som lätt kan omvandlas till en textsträng, som i sin tur hängs på efter "5". I Java är det annorlunda, där börjar kompilatorn med att kolla variablers typer och att operatorer/funktioner får rätt indata innan programmet kompileras och kan köras. Javascript kompileras inte utan körs direkt utan koll. Jag har för mig att man ska kunna ersätta sanningsvärdena true och false med 1 och 0 lite efter behag. Se exempel: https://sv.wikipedia.org/wiki/Javascript#Syntax Tittar man på det ännu nödigare språket Haskell så har additionsfunktionen + följande typsignatur: (+) :: Num a => a -> a -> a vilket på svenska betyder att a är ett numeriskt värde och att funktionen tar två värden av godtycklig typ a som indata och returnerar ett värde av typ a. Konkateneringsfunktionen har ett eget "namn", ++, och har typsignaturen (++) :: [a] -> [a] -> [a] vilket betyder att funktionen tar två listor som båda innehåller värden av typ a och returnerar en lista som innehåller värden av typ a. Så i Haskell slipper man/datorn fundera på vilket funktion som efterfrågas. Redigerad 23 november, 2016 av Mattiasgbg Länk till kommentar Dela på andra webbplatser More sharing options...
Alix Postad 23 november, 2016 Share Postad 23 november, 2016 ... konkatenering ... ... konkatenering ... konkateneras ... Konkateneringsfunktionen ... Det är ett evigt konkande med all denna kod! Länk till kommentar Dela på andra webbplatser More sharing options...
Mattiasgbg Postad 23 november, 2016 Share Postad 23 november, 2016 Det är ett evigt konkande med all denna kod! Och inte blev det lättare när stavningkontrollen ville hjälpa mig. Länk till kommentar Dela på andra webbplatser More sharing options...
Rekommendera Poster