torsdag 18 oktober 2012

Lösningsförslag repetitionsuppgifter del 1

Nedanstående är förslag på lösningar till repetitionsuppgifterna 1.1-1.10.

Rep 1.1

#Summan av två kastade tärningar
import random

t1=random.randint(1,6)
t2=random.randint(1,6)
print("Ögonsumman blir " + str(t1+t2))


Rep 1.2

#Medlet av inmatade tal
summa=0
antal=0

while True :
    try:
        n=float(input("n="))
        if (n == -1) : break
        summa=summa+n
        antal=antal+1
        print("Medlet=" + str(summa/antal))
    except ValueError:
        print("Felaktig inmatning")
print("Slut")

Rep 1.3

#Största av inskrivna positiva tal
storst=-1

while True :
    try:
        n=float(input("n="))
        if (n == -1) : break
        if storst < n : storst=n
        print("Medlet=" + str(summa/antal))
    except ValueError:
        print("Felaktig inmatning")
print("Största talet var: " + str(storst))



Rep 1.4

(x > 100 or x < 50) and x != 20

Rep 1.5

#Skriver ut talet, kvadraten och kuben för 1-20 i kolumner
for x in range(1, 21) :
    print("{:4d}{:6d}{:6d}".format(x, x*x, x*x*x))

Rep 1.6

#Skriver ut positionssiffrorna för ett heltal

tal = input("Skriv ett heltal: ")
nollor=len(tal)-1

#Går igenom tecken för tecken. Lägger till nollor enligt
#position från slutet för att skriva ut vilken plats siffran står på.
for s in tal :
    print("1"+"0"*nollor+"-talssiffran är "+str(s))
    nollor=nollor-1

Rep 1.7
Uttrycket not (not a and not b) ger samma resultat som a or b

Rep 1.8

#Kontrollerar om ett heltal är ett primtal
import math

a=int(input("Skriv ett positivt heltal: "))
rot=int(math.sqrt(a)) + 1
primtal=True

#Testar att dividera med alla tal upp till roten ur det
#inskrivna talet. Sätter primtal till falskt och hoppar ur om delbart.
for i in range(2, rot) :
    if a % i == 0 :
        primtal = False
        break

#Om primtal fortfarande är sant så har inget tal varit delare.
if primtal : print( str(a) + " är ett primtal")
else : print( str(a) + " är inte ett primtal")

Rep 1.9

#Simulerar sönderfall genom kast av många tärningar.
import random

n = 1000
k = 0

print("Kast  Antal")

#Loopar tills tärningarna är slut
while n > 0 :
    print("{:3d}{:8d}".format(k, n))
    #Kastar alla tärningar som är kvar efter förra omgången
    #Tar bort de som slår 6.
    for i in range(n) :
        if random.randint(1, 6) == 6 :
            n=n-1
    k = k +1

Rep 1.10
XOR kan skrivas som tex:

(a or b) and not (a and b) 

men det snyggaste sättet är:

a != b


Rep 1.11

#Hästkapplöpning med tärningskast. Först till 100
#Version med sammansatta logiska-satser
import random

hast1_position = 0
hast2_position = 0
vinnare=0

#Spelaren väljer häst
while True :
    try :
        val=int(input("Satsa på häst 1 eller 2: "))
        break
    except ValueError :
        print("Välj 1 eller 2 ")

#Här springer hästarna
print("Tryck enter för nytt tärningskast")
while hast1_position < 100 and hast2_position < 100 :
    print("Häst 1 har nått: " + str(hast1_position))
    print("Häst 2 har nått: " + str(hast2_position))
    hast1_position=hast1_position+random.randint(1,6)
    hast2_position=hast2_position+random.randint(1,6)
    input() #Tryck enter för varje "tärningskast"

#Vilken häst vann?
if hast1_position < 100 :
    vinnare=2
    print("Häst 2 vann")
elif hast2_position < 100 :
    vinnare=1
    print("Häst 1 vann")
else :
    print("Lika!")

#Vann spelaren?    
if (val == vinnare) :
    print("Du vann!")
else :
    print("Du förlorade")

Inga kommentarer:

Skicka en kommentar