2010-03-03, 14:40
  #13
Medlem
SSHs avatar
Citat:
Ursprungligen postat av MrsYellow
När man har en lista med siffror, typ
Kod:
siffror = {0: 3,1: 3.5,2: 3.2,3: 2.9,4: 3}

Jag vill ha ett medeltal av dessa. Hur skall jag göra för att få summan av talen?
Nämnarn får man väl med len(siffror)

Har prövat med
Kod:
bla = len(luvut)
summa = 0
for test in siffror:
    summa = summa + siffror[test]
medeltal = summa/bla

Men summa stämmer inte.. När man trycker in siffrorna på kalkylatorn blir summan 15,7 och enligt python blire 15,6

För mig blir summa 15.6, både då jag använder Python och då jag huvudräknar. Talen du har i din dict är 3, 3.5, 3.2, 2.9 och 3. Kanske misstolkar du vad det första värdet är, det är 3 och inte 3.1. 1:an är nyckeln för det andra värdet i dicten. Enligt kodningsstandarden ska man ha mellanslag mellan koman, blir kanske tydligare då:
[PHP]siffror = {0: 3, 1: 3.5, 2: 3.2, 3: 2.9, 4: 3}[/PHP]

En fråga är annars varför du använder en dict istället för en lista. Du kan också korta ner koden om du använder:
[PHP]summa = sum(siffror.values())[/PHP]
Citera
2010-03-03, 14:55
  #14
Medlem
MrsYellows avatar
Visste inte att man kunde använda "summa = sum(siffror.values())" därför använde jag en dikt

Och det stämmer som du säger.. jag har räknat det första som 3.1

Tack för hjälpen
Citera
2010-03-03, 15:12
  #15
Medlem
MrsYellows avatar
Nu har jag skrivit hela min kod men jag får inte igång den
Har många små program i min kod och main programmet vägrar starta dem. Ser förenklat ut såhär nu
Kod:
def prog1():
     Många koder

def prog2(prog1.1, prog1.2):
     Mera koder

def prog(prog1.2, prog2.1, prog2.2):
.
.
.

def main():
     prog1
     prog2
     .
     .
     .

main()

Varför kommer det inte igång?
Citera
2010-03-03, 18:16
  #16
Medlem
MrsYellows avatar
Vad betyder det när jag får

TypeError: object of type 'float' has no len()

eller

TypeError: 'float' object is not iterable
Citera
2010-03-03, 21:50
  #17
Medlem
DOGKAiSERs avatar
Citat:
Ursprungligen postat av MrsYellow
Vad betyder det när jag får

TypeError: object of type 'float' has no len()

eller

TypeError: 'float' object is not iterable

1. len() returnerar längd, ett nummer har ingen längd. Vill du kolla antalet siffror får du konvertera till str först.

2. Om du vill gå igenom siffror i en float, konvertera till str: for n in str(1.618): print n tex.
Citera
2010-03-22, 02:38
  #18
Medlem
understrecks avatar
Citat:
Ursprungligen postat av MrsYellow
Nu har jag skrivit hela min kod men jag får inte igång den
Har många små program i min kod och main programmet vägrar starta dem. Ser förenklat ut såhär nu
Kod:
def prog1():
     Många koder

def prog2(prog1.1, prog1.2):
     Mera koder

def prog(prog1.2, prog2.1, prog2.2):
.
.
.

def main():
     prog1
     prog2
     .
     .
     .

main()

Varför kommer det inte igång?

Lite sent svar men duger för framtida referens. Du måste skriva prog1() med parenteser efter för att göra ett funktionsanrop. Alla funktioner är objekt så när du skriver prog1 utan parenteser returneras enbart en sträng som representerar detta objekt. Ekvivalent med att skriva prog1.__repr__().

EDIT: Dessutom får inte variabelnamn innehålla punkter såsom i prog1.2
__________________
Senast redigerad av understreck 2010-03-22 kl. 02:41.
Citera
2010-04-19, 16:39
  #19
Medlem
Awwents avatar
Passar på att låna tråden till att fråga en nybörjarfråga. Jag började med Python igår och har lärt mig syntaxen nu och har inga större problem att koda simpla program då jag har hållt på med annan programmering tidigare. Fram tills nu har jag enbart hållt på med terminal-applikationer (kör GNU/Linux). Min fråga är då; har ni några tips på vad man skulle kunna göra för att öva in språket och bli duktig på det? Jag söker alltså tips på hyfsat simpla saker man kan göra för att få träning - spel, applikationer, vad som helst!

MVH
Citera
2010-04-19, 17:00
  #20
Medlem
DrMegahertzs avatar
Citat:
Ursprungligen postat av Awwent
Passar på att låna tråden till att fråga en nybörjarfråga. Jag började med Python igår och har lärt mig syntaxen nu och har inga större problem att koda simpla program då jag har hållt på med annan programmering tidigare. Fram tills nu har jag enbart hållt på med terminal-applikationer (kör GNU/Linux). Min fråga är då; har ni några tips på vad man skulle kunna göra för att öva in språket och bli duktig på det? Jag söker alltså tips på hyfsat simpla saker man kan göra för att få träning - spel, applikationer, vad som helst!

MVH

Spel brukar ju både vara roligt och ge bra träning, så om det är intressant så kan jag rekommendera PyGame för ändamålet. Enklare arkadspelskloner(t.ex) kan man faktiskt lära sig ganska mycket utav.

Om du är intresserad av matematiska problem så kan Project Euler vara skojj att slösa tid på. Där ställs du framför ett problem och får själv försöka hitta en effektiv väg till lösningen.

Eller om du vill börja knacka webbapplikationer så rekommenderar jag att du tar en kik på Django.
__________________
Senast redigerad av DrMegahertz 2010-04-19 kl. 17:03.
Citera
2010-04-19, 20:33
  #21
Medlem
Sorkus avatar
Ändrade titeln på tråden

/mod
Citera
2010-04-21, 00:16
  #22
Medlem
understrecks avatar
Citat:
Ursprungligen postat av Awwent
...

Här är länkar till labbar och projektuppgifter för de som går första programmeringskursen på KTH. Kan kanske vara lite inspirerande. Föreläsningsanteckningar etc finns också om du rotar runt lite.

http://www.csc.kth.se/utbildning/kth/kurser/DD1311/prgs10/labbar/
http://www.csc.kth.se/utbildning/kth/kurser/DD1311/P/lydelser2010/
Citera
2010-04-21, 10:01
  #23
Medlem
Hej!
Jag håller på med en python-projektuppgift i skolan. Programmet är ett verktyg för att mata in resultat i en fotbollstabell. Innan jag är helt klar vill jag fixa till en "felinmatningsspärr". Med andra ord: om användaren skriver in något som programmet inte gillar så ska programmet inte krascha utan fråga samma fråga igen.
Det har gått bra tills jag kommit till den biten där användaren matar in resultatet.

Programkoden för just detta moment är alltså endast:

vemvann = raw_input("Vad blev resultatet? ")

Det är tänkt att användaren skriver in t.ex.: 2-1.
Om användaren skriver in t.ex.: E-3, vill jag att programmet ska se att något är fel och ställa frågan igen - tills den får ett resultat på formen: 2-1.

Längre ned kommer jag dessutom behöva använda antalet gjorda mål för sig, (vemvann[0] och vem vann[2]).

Hoppas det blev något sånär klart vad jag menar.

Tack!
Citera
2010-04-21, 10:45
  #24
Medlem
metapods avatar
Citat:
Ursprungligen postat av harderbetterfasterstronger
Hej!
Jag håller på med en python-projektuppgift i skolan. Programmet är ett verktyg för att mata in resultat i en fotbollstabell. Innan jag är helt klar vill jag fixa till en "felinmatningsspärr". Med andra ord: om användaren skriver in något som programmet inte gillar så ska programmet inte krascha utan fråga samma fråga igen.
Det har gått bra tills jag kommit till den biten där användaren matar in resultatet.

Programkoden för just detta moment är alltså endast:

vemvann = raw_input("Vad blev resultatet? ")

Det är tänkt att användaren skriver in t.ex.: 2-1.
Om användaren skriver in t.ex.: E-3, vill jag att programmet ska se att något är fel och ställa frågan igen - tills den får ett resultat på formen: 2-1.

Längre ned kommer jag dessutom behöva använda antalet gjorda mål för sig, (vemvann[0] och vem vann[2]).


Jag skulle rekommendera dig att använda funktionen str.split (sep, [maxsplit]) för att sedan se om den retunerade listan innehåller ett numeriskt värde på plats L[0] samt L[1] (där L är namnet på din lista). För att se om det är ett numeriskt värde kan du använda dig utav funktionen str.isdigit ().

Relevant dokumentation:
Kodexempel:

Kod:
#!/usr/bin/python

input = raw_input   ("input: ")
L     = input.split ('-', 1)

if len (L) != 2 or False in map (lambda (d): d.isdigit (), L):
  print "Invalid input!"
else:
  print "team #1: " + L[0]
  print "team #2: " + L[1]
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in