Python - kontrollstrukturer

 

Uke 40

datatyper:

  • int
  • float
  • str
  • boolean

 

navn: variabler
 

operatorer:
    + - * /

    // %

Uke 41

datastrukturer:

  • list
  • tuple
  • dictionary
  • set

 

 

oppretting

uthenting

oppdatering

manipulering

Uke 42

kontrollstrukturer:

  • betingelser
  • valg
  • løkker
  • conditions
  • conditional execution
  • loops

Lærebok:

  • 4: Conditional execution
  • 5: Iterations
import math

lon = float(input("Oppgi lengdegrad: "))
lat = float(input("Oppgi breddegrad: "))

R = 6378137
phi = lat * math.pi / 180
lmda = lon * math.pi / 180
lmda_0 = 0

x = R * (lmda - lmda_0)
y = R * (math.log(math.tan((math.pi / 4) + (phi / 2))))

print("x: ", x, "y: ", y)
# Gyldige kombinasjoner for at spiller A skal vinne 
# (Valg for spiller A står først, 
# deretter valg for spiller B):
#
# (Stein, Saks)
# (Saks, Papir)
# (Papir, Stein)

Stein, saks, papir


vinnervalg_A = [("Stein", "Saks"), ("Saks", "Papir"), ("Papir", "Stein")]

uavgjort =  [("Stein", "Stein"), ("Saks", "Saks"), ("Papir", "Papir")]

Hva må til for at A skal vinne?


A = input("Spiller A - velg Stein, Saks eller Papir: ")

B = input("Spiller B - velg Stein, Saks eller Papir: ")

spillervalg = (A, B)

A og B legger inn sine valg

if spillervalg in uavgjort: 
    print("Uavgjort")
elif spillervalg in vinnervalg_A:
    print("A vinner")
else:
    print("B vinner")

Bare én av print-linjene vil bli utført

if spillervalg in uavgjort: 
    print("Uavgjort")

if-setninger inneholder betingelser som er enten True eller False

Betingelsen er her "spillervalg in uavgjort"

Kodeblokka under blir bare utført hvis betingelsen er True

elif spillervalg in vinnervalg_A:
    print("A vinner")

Vi kan utvide en if-setning med flere betingelser som testes etter tur med elif (som betyr else if)

else:
    print("B vinner")

else-delen av if-setningen brukes for de tilfellene der ingen betingelser er True

# Gyldige kombinasjoner for at spiller A skal vinne
# (Valg for A står først, deretter valg for B):
#
# (Stein, Saks)
# (Saks, Papir)
# (Papir, Stein)

vinnervalg_A = [("Stein", "Saks"), ("Saks", "Papir"), ("Papir", "Stein")]
uavgjort =  [("Stein", "Stein"), ("Saks", "Saks"), ("Papir", "Papir")]

A = input("Spiller A - velg Stein, Saks eller Papir: ")
B = input("Spiller B - velg Stein, Saks eller Papir: ")
spillervalg = (A, B)

if spillervalg in uavgjort:
    print("Uavgjort")
elif spillervalg in vinnervalg_A:
    print("A vinner")
else:
    print("B vinner")

Text

Hele programmet:

Fig. fra Ch. 4.9 i Halterman

Generell struktur for if-setninger

Et flyt-skjema kan vise beslutningsstrukturen i en if-setning

 

Fig. 4.8 i Halterman

Hvordan programmeres betingelser?

x == 3
x < y
x >= y
x <= y
x != y - 2
x < 10
x >= 0 and x < 10
x < 0 and x < 10
x >= 0 and x < 2
x < 0 or x < 10
x > 0 or x < 10
x < 0 or x > 10
Given the following definitions:
x, y, z = 3, 5, 7
evaluate the following Boolean expressions:
True
True
False
True
False
True
True
False
False
True
True
False

Haltermann, ex. 4.14.6

Truth Value Testing

If we use a non-boolean object as a condition in an if statement in place of the boolean expression, Python will check for its truth value and use that to decide whether or not to run the indented code. By default, the truth value of an object in Python is considered True unless specified as False in the documentation.

Here are most of the built-in objects that are considered False in Python:

  • constants defined to be false: None and False
  • zero of any numeric type: 0, 0.0, 0j, Decimal(0), Fraction(0, 1)
  • empty sequences and collections: '"", (), [], {}, set(), range(0)

 

Udacity-kurset, Lesson 4.7 Boolean Expressions for Conditions

print(bool(0))
print(bool([]))
print(bool({}))
print(bool(()))
print(bool(range(0)))
print(bool(5))
print(bool((1, 2, 3)))
print(bool([1, 2, 3]))
False
False
False
False
False
True
True
True

Vi kan teste sannhetsverdien av objekter med bool-funksjonen:

Se flere eksempler og mer avansert bruk i læreboka og Udacity-kurset.

Løkke-programmering

 

Eng.: loops, iterations

 

  • Endelige løkker - repeteres et kjent antall ganger
  • Ubestemte løkker - repeteres så lenge betingelse er sann

For-løkker

 

Se eksempler på bruk av for-løkker her:

https://folk.ntnu.no/sverrsti/INGG1001-H2019/For.html

While-løkker

Fig. fra Ch. 5.1 i Halterman

# number to find the factorial of
number = 6
# start with our product equal to one
product = 1
# track the current number being multiplied
current = 1

while  current <= number:
    # multiply the product so far by the current number
    if current == 1:
        print(current, end=" ")
    else:
        print( "*", current, end=" ")
    product *= current
    # increment current with each iteration until it reaches number
    current += 1

print(" =", end=" ")
# print the factorial of number
print(product)

Uke 42 - bruk tid på dette:

  • Mange gode oppgaver i Udacity-kurset
  • Bruk veiledningstimene til øvelsene i Udacity-kurset