FAQ

Programmeringsteknik

(Skillnad mellan versioner)
Hoppa till: navigering, sök
Versionen från 2 juli 2007 kl. 13.23 (redigera)
KTH.SE:u1xsetv1 (Diskussion | bidrag)
(FAQ)
← Gå till föregående ändring
Versionen från 2 juli 2007 kl. 13.23 (redigera) (ogör)
KTH.SE:u1xsetv1 (Diskussion | bidrag)
(FAQ)
Gå till nästa ändring →
Rad 16: Rad 16:
* '''Hur gör man formaterad utskrift? SVAR''': Exempel: * '''Hur gör man formaterad utskrift? SVAR''': Exempel:
*:<pre> *:<pre>
-*:print " Sko Storlek Pris";+print " Sko Storlek Pris";
-*:print "%10s%8i%12.2f"%(skonamn,storlek,pris)+print "%10s%8i%12.2f"%(skonamn,storlek,pris)
*:</pre> *:</pre>

Versionen från 2 juli 2007 kl. 13.23

FAQ

  • ...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!
  • 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",
  • "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).
  • 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()
  • 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
  • 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
  • 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!
  • 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)
  • 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.
  • 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]

  • 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