Funktioner i funktioner
Redan i början av kursen introducerades en funktion som var innuti en annan funktion, så kallade nästlade funktioner. Nämligen:vinkeln=float(input("vinkeln="))
Där funktionen input körs först och svaret direkt hanteras av funktionen float. Denna typ av skrivning är mycket vanlig för att slippa onödiga variabler. Alternativet skulle varit att först skapa en strängvariabel med input och sedan på en ny rad göra om den till ett tal:
s=input("vinkeln=")
vinkeln=float(s)
Något som ju är klumpigare både för programmeraren och datorn. Fram över kommer vi i högre utsträckning ha användning för denna typ av skrivning.
Metoder efter metoder
På liknande sätt som funktioner kan nästlas kan metoder skrivas efter varandra med punkt mellan. Nedanstående följd av metoder skriver ut "STOP" från texten "stopp":"stopp".upper().replace("STOPP", "STOP")Övning 1.39
Testa ovanstående i interaktiva skalet.
Funktioner i villkor
Det går även att använda funktioner som input direkt i ett villkor.Övning 1.40
Använd interaktiva skalet och testa detta:
while input("Sluta? ") !="J" : print("Ett varv till")
Nyckel ordet pass
Det finns situationer då språket kräver att en sats finns men du inte vill att någon åtgärd görs. Då kan pass komma till användning. Ex:
while True : try: x=float(input("Skriv ett tal ")) break except ValueError : pass
En annan användning av pass är som platshållare för icke implementerade delar av programmet medan du programmerar:
if slut_pengar : pass #Här ska något fiffigt göras
Bra kodstil
Alla språk har en praxis för hur man bör skriva koden. Att följa denna hjälper dig själv och andra att läsa din kod. Här följer bra praxis för Python:
- Använd 4 mellanslag för indrag, inte tab.
- Använd radbrytning så att raderna inte blir längre än 79 tecken. Detta underlättar läsning och man kan ha flera filer kod bredvid varandra på skärmen.
- Använd blankrader för att separera kod i stycken. Dela efter sammanhängande innehåll.
- Initiera variabler och konstanter i början av den kod där de används när så är möjligt.
- Sätt i första hand kommentarer på en egen rad. Undvik placeringar i slutet av längre kodrader.
- Använd dokumentationssträngar. Vi återkommer till dem och mer om koddokumentation senare i kursen.
- Använd mellanslag runt operatorer och efter komma, men inte direkt efter eller före parenteser. Ex: a = f(1, 2) + g(3, 4).
- Namnge variabler, funktioner mm. så att dess syfte och funktion framgår.
- Namnge variabler, funktioner och klasser på ett konsistent sätt. Variabler, funktioner och metoder skrivs med sma_bokstaver_och_streck_mellan_orden. Klasser skrivs MedStorForstaBokstav och ihopskrivna ord.
- Använd self som namn på det första metodargumentet. Vi återkommer till detta.
- Använd inte udda tecken i koden. För namn på variabler mm bör du hålla dig till Aa-Zz samt 0-9
Repetitionsuppgifter 1.2
Rep 1.4
Skriv ett logiskt uttryck i Python som returnerar True om talet x är: Större än 100 eller mindre än 50 men inte 20.
Rep 1.5
Skriv ett program som gör en tabell med kolumner för talet, talets kvadrat och kub (upphöjt till tre) för talen 1 till och med 20.
Rep 1.6
Skriv ett program som talar om värdesiffrorna i ett heltal som användaren matar in.
Exempel på utskrift:
Skriv ett heltal 1234
1000-talssiffran är 1
100-talssiffran är 2
10-talssiffran är 3
1-talssiffran 4
Tips: Behandla talet som en sträng
Rep 1.7
Använd interaktiva skalet och testa följande logiska uttryck: not (not a and not b)
Sätt in olika kombinationer av True och False i stället för a respektive b.
Påminner resultaten om något annat logiskt uttryck?
Rep 1.8
Skriv ett program som talar om om ett inmatat tal är ett primtal. Se nedanstående pseudokod för programmeringstips.
input tal beräkna roten ur talet avrundat till närmaste högre heltal Sätt primtal=True för alla tal mellan 2 och roten ur talet : om delbart sätt primtal=False och hoppa ur loopen skriv ut om det är ett primtal eller inte
Rep 1.9
För att simulera radioaktivt sönderfall brukar man kasta ett större antal tärningar i flera omgångar och efter varje kast plocka bort sexorna och räknar hur många tärningar som är kvar. Skriv ett program som gör motsvarande simulering. Se pseudokoden nedan:
sätt antal tärningar till 1000 sätt antal kast till noll medan det finns tärningar kvar: skriv ut antal gjorda kast och antal tärningar som är kvar för varje tärning som är kvar: slumpa ett heltal 1 till och med 6 och om det blir 6 ta bort en tärning. öka antal kast med ett
Rep 1.10
Inom logik används ibland a XOR b. Där XOR är förkortning för exlusive or. Denna operation returnerar sant om antingen a är sant eller b är sant men inte om båda är sanna. Skriv ett logiskt uttryck i Python som motsvarar XOR.
Tips: Det finns ett fiffigt sätt!
Rep 1.11
Skriv ett program där två "hästar" tävlar mot varandra genom att ta slumpade steg som i uppgift 1.3. Användaren satsar på en av hästarna före start och får sedan reda på om hen vann eller förlorade när "hästarna gått i mål.
Resultat av Rep 1.9 plottat med GNUplot
Inga kommentarer:
Skicka en kommentar