Sida 1 av 1
Nybörjare i python, göra en "ruta" [LÖST]
Postat: 17 nov 2007, 13:40
av Rasmus
Jag har följt denna nybörjarguiden i python:
http://wiki.imbumba.se/index.php/Funkti ... programmet
och jag har fastnatt på: "Skriv en funktion som skriver ett ord i en liten ram och där ordet skickas som en parameter till funktionen:"
Resultatet blir inte riktigt bra:
och skriver jag bokstäverna åäö så blir resultatet ännu sämre:
Koden till programmet är:
Kod: Markera allt
#!/usr/bin/python
# * coding:utf8 *
namn = raw_input('Namn: ')
def ram(namn):
ant = len(namn)
def linje(ant):
lin = ant * '-'
print '+-',lin,'-+'
def name(namn):
print '| ',namn,' |'
linje(ant)
name(namn)
linje(ant)
ram(namn)
Någon som vet hur jag ska fixa mellanrummen i början och i slutet av "rutan"?
SV: Nybörjare i python, göra en "ruta"
Postat: 17 nov 2007, 14:03
av gasol
Om du läser här
http://docs.python.org/ref/print.html så står det att print av nån anledning lägger inte mellanslag vid varje komma tecken.
a = 'a'
b = 'b'
c = 'c'
print a,b,c
skulle skriva ut a b c inte abc som vore vettigt.
För att lösa ditt problem så
ändra raden
lin = ant * '-'
till
lin = '+-' + ant * '-' + '-+'
och sedan så skriver du bara ut raden lin istället för '+-' ,lin, ' -+'
samt raden
print '|',namn,'|'
till denna rad
print '|',namn,'|'
exempel
SV: Nybörjare i python, göra en "ruta"
Postat: 17 nov 2007, 14:08
av mcNisse
byt ut
ant = len(namn)
mod
ant = len(namn.decode('utf-8'))
Borde fungera,,,
SV: Nybörjare i python, göra en "ruta"
Postat: 17 nov 2007, 14:10
av Rasmus
Tack båda! Nu funkar det precis som jag ville ha det frånbörjan

tack
SV: Nybörjare i python, göra en "ruta"
Postat: 17 nov 2007, 20:57
av Lars
mcNisse skrev:
ant = len(namn.decode('utf-8'))
Eller, för att vara något mer korrekt:
Kod: Markera allt
import sys
ant = len(namn.decode(sys.stdin.encoding))
SV: Nybörjare i python, göra en "ruta"
Postat: 17 nov 2007, 20:58
av Rasmus
Lars skrev:
mcNisse skrev:
ant = len(namn.decode('utf-8'))
Eller, för att vara något mer korrekt:
Kod: Markera allt
import sys
ant = len(namn.decode(sys.stdin.encoding))
Vad är skillnaden?
då åäö funkade jätte bra med
mcNisse skrev:
ant = len(namn.decode('utf-8'))
Det var inte meningen att låta otrevlig, dock svårt att skriva med olika tonlägen

SV: Nybörjare i python, göra en "ruta" [LÖST]
Postat: 17 nov 2007, 21:02
av Lars
Vilken teckenkodning man använder är olika på olika terminaler. På Ubuntu så blir sys.stdin.encoding 'UTF-8', så det blir alltså samma sak. Men på något annan system så kan det vara annorlunda.
SV: Nybörjare i python, göra en "ruta" [LÖST]
Postat: 17 nov 2007, 21:13
av Rasmus
Lars skrev:
Vilken teckenkodning man använder är olika på olika terminaler. På Ubuntu så blir sys.stdin.encoding 'UTF-8', så det blir alltså samma sak. Men på något annan system så kan det vara annorlunda.
Okej tack, då vet jag vad felet är ifall jag väljer att boota windows

(mycket otroligt, men ändå)
Nu går jag off-topic i min egen tråd men, är det någon som vet nån bra guide jag kan följa när "bli ormtjusare" är slut? (helst på svenska, dock inget måste) tack i förväg.