http://openproject.hu/learn_python/2006-09-18/gerard_swinnen_tanuljunk_…
alapján tanulom a python nyelvet, még az elején tartok.
Az egyik feladat arról szólt, hogy írni kell egy szkriptet, ami egy új változóba fordított sorrendben másolja át egy karakterlánc karaktereit.
Nem okozott különösebb problémát, csak a végeredmény, ugyanis ha kiíratom az eredeti szöveget, abban jól jelennek meg az ékezetes betűk, viszont a fordítottjában, kérdőjelek jelennek meg, ékezetes karakterenként kettő.
Az operációs rendszerem van rosszul beállítva, vagy a python-ban csinálok valamit rosszul?
A szkript:
# -*- coding:Utf-8 -*-
ekl = "rómaifővezér"
eklh =len(ekl)
n=eklh-1
ukl = ""
while n >= 0:
ukl = ukl+ekl[n]
n = n-1
print ekl
print ukl
Az eredménye:
rómaifővezér
r��zev��fiam��r
Az operációs rendszer:
Kubuntu 7.1, Python 2.5.1
- 1491 megtekintés
Hozzászólások
1. A kodot tedd [ code ] [ / code] koze (space nelkul).
2. Az UTF8 byte-ok sorrendjet is megforditod, karakteren belul. karakter!=byte
----
Sooner or later you had to talk, even if it was only because you'd run out of things to throw. - Pratchett
honlap készítés
- A hozzászóláshoz be kell jelentkezni
Ne haragudj, hülye (illetve kezdő) kérdés: mit nevezel kódnak?
Hiba üzenetet kaptam, amikor beírtam az elejére és a végére.
# -*- coding:Utf-8 -*-
...
print ukl
File "swinnen5_9b.py", line 20
[/code]
^
SyntaxError: invalid syntax
- A hozzászóláshoz be kell jelentkezni
Ugy erti, hogy amikor ide beillesztesz valami kodot, akkor azt tedd
blokkba.
- A hozzászóláshoz be kell jelentkezni
Köszi, kicsit szőke vagyok.
- A hozzászóláshoz be kell jelentkezni
>>> s = u"öüóőúéáűí"
>>> print s[::-1]
íűáéúőóüö
>>>
- A hozzászóláshoz be kell jelentkezni
Ez mondjuk "nem gyenge" megoldás az enyémhez képest (egy újszülöttnek minden vicc új), mondjuk még nem tartok itt a "könyvben".
- A hozzászóláshoz be kell jelentkezni
Viszont az én kódomban is működik az "u"
(amiről nem tudom, hogy micsoda, de már tudom, hogy mit csinál)
ekl=u"rómaifővezér"
eredmény:
rómaifővezér
rézevőfiamór
Köszönöm!
- A hozzászóláshoz be kell jelentkezni
Nem tudom, de feltételezem, az "u" jelenti az utf-8 kódra való hivatkozást.
- A hozzászóláshoz be kell jelentkezni
Nem utf8 hivatkozás, hanem unicode string.
- A hozzászóláshoz be kell jelentkezni
Egy kis referencia.
- A hozzászóláshoz be kell jelentkezni
Én valami ilyesmi kódot javaslok:
# -*- coding:Utf-8 -*-
ekl = "rómaifővezér"
eklh =len(ekl)
n=eklh-1
ukl = ""
while n >= 0:
if ekl[n] <= 'z':
ukl = ukl+ekl[n]
else:
ukl = ukl+ekl[n-1]
ukl = ukl+ekl[n]
n = n - 1
n = n-1
print ekl
print ukl
Az ékezetes karaktereket az utf-8 két bájton tárolja, ezért, ha azt megfordítod értelmetlen jelek jelennek meg a képernyőn. Az én progim, nem fordítja meg az ékezetes karakterek kódjait.
- A hozzászóláshoz be kell jelentkezni
ittvan vegre az unicode ideje akkor mar ne ganyoljuk ossze!
az utf-8 1,2 es 3 byte on is tarolhat ertekeket
(lehet 4-en is)
feltételezni hogy max 2 ugyanolyan szuklatokoruseg mint az emcsiknak az hogy nem foglalkoztak az ekezetekkel
- A hozzászóláshoz be kell jelentkezni