FAQ

Programmeringsteknik

(Skillnad mellan versioner)
Hoppa till: navigering, sök
Versionen från 2 juli 2007 kl. 13.34 (redigera)
KTH.SE:u1xsetv1 (Diskussion | bidrag)
(FAQ)
← Gå till föregående ändring
Versionen från 2 juli 2007 kl. 13.37 (redigera) (ogör)
KTH.SE:u1xsetv1 (Diskussion | bidrag)
(FAQ)
Gå till nästa ändring →
Rad 21: Rad 21:
:Här är skonamn en sträng som skrivs ut i tio positioner (%10s), storlek ett heltal som skrivs ut i åtta positioner (%8i) och pris ett flyttal som skrivs ut i tolv positioner med två decimaler (%12.2f). Dokumentation finns på [http://docs.python.org/lib/typesseq-strings.html] :Här är skonamn en sträng som skrivs ut i tio positioner (%10s), storlek ett heltal som skrivs ut i åtta positioner (%8i) och pris ett flyttal som skrivs ut i tolv positioner med två decimaler (%12.2f). Dokumentation finns på [http://docs.python.org/lib/typesseq-strings.html]
# '''Jag använder sys.exit() för att avbryta programmet, men då får jag enmassa röd text i IDLE. SVAR''': Lägg in en # '''Jag använder sys.exit() för att avbryta programmet, men då får jag enmassa röd text i IDLE. SVAR''': Lägg in en
-#:<pre>+:<pre>
-#:try: ... except SystemExit:+:try: ... except SystemExit:
-#:</pre> +:</pre>
-#:runt ditt anrop av main så slipper du den röda texten.+:runt ditt anrop av main så slipper du den röda texten.
# '''Jag försöker skriva ut en rad streck med en slinga: # '''Jag försöker skriva ut en rad streck med en slinga:
-#:<pre>+:<pre>
-#:for i in range(5):;+:for i in range(5):;
-#:print "-",+:print "-",
-#:</pre> +:</pre>
-#:men får mellanslag mellan varje tecken. Hur ska jag göra för att Python inte ska lägga in mellanslagen automatiskt?''' SVAR: I modulen sys finns en variabel som inför varje print håller reda på om ett mellanslag ska skrivas ut eller inte. Man kan själv ställa om variabeln så här:+:men får mellanslag mellan varje tecken. Hur ska jag göra för att Python inte ska lägga in mellanslagen automatiskt?''' SVAR: I modulen sys finns en variabel som inför varje print håller reda på om ett mellanslag ska skrivas ut eller inte. Man kan själv ställa om variabeln så här:
-<pre>+:<pre>
-import sys;+:import sys;
-for i in range(5):; +:for i in range(5):;
-print "-",;+:print "-",;
-sys.stdout.softspace = False+:sys.stdout.softspace = False
-</pre>+:</pre>

Versionen från 2 juli 2007 kl. 13.37

FAQ

  1. ...is still running... SVAR: När du kör program från IDLE tänk på att avbryta en gammal körning innan du kör programmet igen. Tex går ctrl+c att använda innan en ny körning av programmet!
  2. Jag vill inte ha ny rad mellan min utskrifter. SVAR: Skriv till ett komma(,) efter print-satsen, t ex print "här skrivs något ut",
  3. "None" skrivs ut på skärmen. SVAR: En funktion utan return-sats returnerar None. Troligen har du råkat anropa en sån funktion i en print-sats, t ex print skriv_ut() Lösningen är att anropa funktionen utan print (eller låta funktionen returnera den sträng som ska skrivas ut).
  4. En extra tom rad skrivs ut som jag inte vill ha! SVAR: Läser du in data från en fil? Tänk på att varje rad du läser in innehåller ett radbrytningtecken "\n" i slutet. Du får enklast bort detta genom att på varje rad du läser från filen använda funktionen strip(). I stället för: raden = filen.readline() skriver du: raden = filen.readline.strip()
  5. En if-sats fungerar inte. SVAR: Tänk på att använda rätt datatyper. "1" != 1 , dvs en sträng med en etta är inte samma som en heltal med en etta. Om du läst in rader från en fil och du använder de variablerna i if-satser kan det vara samma problem som i tomradsfrågan ovan, alltså ett "\n" sist i variabeln som måste städas bort med strip
  6. En nyckel som finns i en dictionary fungerar inte. SVAR: Om du läst in nycklarna från en fil kan det vara samma problem som i tomrads frågan ovan, alltså ett "\n" som ligger sist i nyckeln och måste städas bort med strip
  7. invalid_syntax SVAR: Då är det ofta tecknet/raden innan som det är fel på.
    1. Kolla kolon(:) på raden innan
    2. Kolla så du tabbat in efter kolon(:)
    3. Kolla parantes () och klamrar [] på raden/tecknet innan
    4. kolla tabbar, även kommentarer med måste tabbas rätt! Matcha med det stycke ovan som ska ha samma intabbning.
    5. Det är fel tabbat! python har rätt!
  8. can't concatenate str and int SVAR: Om du skriver ut både strängar och tal i samma print-sats kan du behöva konvertera talen till strängar: print frukten + " kostar " + str(pris)
  9. När jag läser in filen så läses inget in, men det har fungerat förut.: Öppna filen i WordPad och kolla så den innehåller något. Spara och stäng filen igen.
  10. Hur gör man formaterad utskrift? SVAR: Exempel:
print " Sko Storlek Pris";
print "%10s%8i%12.2f"%(skonamn,storlek,pris)
Här är skonamn en sträng som skrivs ut i tio positioner (%10s), storlek ett heltal som skrivs ut i åtta positioner (%8i) och pris ett flyttal som skrivs ut i tolv positioner med två decimaler (%12.2f). Dokumentation finns på [1]
  1. Jag använder sys.exit() för att avbryta programmet, men då får jag enmassa röd text i IDLE. SVAR: Lägg in en
try: ... except SystemExit:
runt ditt anrop av main så slipper du den röda texten.
  1. Jag försöker skriva ut en rad streck med en slinga:
for i in range(5):;
print "-",
men får mellanslag mellan varje tecken. Hur ska jag göra för att Python inte ska lägga in mellanslagen automatiskt? SVAR: I modulen sys finns en variabel som inför varje print håller reda på om ett mellanslag ska skrivas ut eller inte. Man kan själv ställa om variabeln så här:
:import sys; :for i in range(5):; :print "-",; :sys.stdout.softspace = False :
Den här artikeln är hämtad från http://wiki.math.se/wikis/dd100n_0701/index.php/FAQ
Personliga verktyg