Nybörjare i python, göra en "ruta" [LÖST]

Här diskuteras programmering och utveckling
Användarvisningsbild
Rasmus
Inlägg: 2291
Blev medlem: 07 sep 2006, 18:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Svalsta

Nybörjare i python, göra en "ruta" [LÖST]

Inlägg 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:

Kod: Markera allt

+- ---- -+
|  Namn  |
+- ---- -+
och skriver jag bokstäverna åäö så blir resultatet ännu sämre:

Kod: Markera allt

+- ------ -+
|  åäö  |
+- ------ -+
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"?
Senast redigerad av 1 DrMegahertz, redigerad totalt 17 gånger.
Användarvisningsbild
gasol
Inlägg: 405
Blev medlem: 27 jul 2007, 14:57
Kontakt:

SV: Nybörjare i python, göra en "ruta"

Inlägg 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

Kod: Markera allt

x----------x
| apan ola |
x----------x
The Black Mountain Scorpion Hoedown Bluegrass Experience Gang
From Left to Right: Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle.
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

SV: Nybörjare i python, göra en "ruta"

Inlägg av mcNisse »

byt ut
ant = len(namn)
mod
ant = len(namn.decode('utf-8'))

Borde fungera,,,
KDE 4.5 SC är ute i det fria!!! Tjoho

Stagnation is good for nobody - after all if you don't progress you end up with gnome
Användarvisningsbild
Rasmus
Inlägg: 2291
Blev medlem: 07 sep 2006, 18:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Svalsta

SV: Nybörjare i python, göra en "ruta"

Inlägg av Rasmus »

Tack båda! Nu funkar det precis som jag ville ha det frånbörjan ;D tack
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

SV: Nybörjare i python, göra en "ruta"

Inlägg 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))
Användarvisningsbild
Rasmus
Inlägg: 2291
Blev medlem: 07 sep 2006, 18:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Svalsta

SV: Nybörjare i python, göra en "ruta"

Inlägg 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 ;)
Senast redigerad av 1 Rasmus, redigerad totalt 17 gånger.
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

SV: Nybörjare i python, göra en "ruta" [LÖST]

Inlägg 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.
Användarvisningsbild
Rasmus
Inlägg: 2291
Blev medlem: 07 sep 2006, 18:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Svalsta

SV: Nybörjare i python, göra en "ruta" [LÖST]

Inlägg 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.
Skriv svar

Återgå till "Programmering och webbdesign"