Buongiorno a tutti
mi sto esercitando con python 2.7.2, nella creazione di un semplice programmino per la codifica di testi basandosi sulla successione di fibonacci. lo script legge la frase, la divide parola per parola e sostituisce ogni lettera con il numero assegnato in un apposito file txt esterno. lascia in output un file txt contenente, per ogni riga, una lettera codificata. fino a qui tutto ok.
nella decodifica, invece, viene letta una riga per volta e decodificata nel simbolo\lettera corrispondente, per poi essere riscritti su un altro file di testo.
il problema viene qui. il file decodificato contiene, per ogni riga, una lettera della frase. vorrei fare in modo che le lettere decodificate vengano scritte su un'unica riga.
non mi fa allegare il cifrario per codifica e decodifica, quindi lo incollo di seguito insieme al codice completo:
def menu():
print "C - Codifica"
print "D - Decodifica"
def codifica():
a={}
file=open("codifica.txt", "r")
for riga in file.readlines():
splitted = riga.split('|')
a[splitted[0]] = splitted[1]
file.close()
parola = raw_input("Parola da codificare :")
n = 0
while n < len(parola):
b = parola[n]
if a.has_key(b):
print a[b]
d=open("codificato.txt", "a")
d.write(a[b])
d.close()
n = n + 1
def decodifica():
a={}
file=open("decodifica.txt", "r")
for riga in file.readlines():
splitted = riga.split('|')
a[splitted[0]] = splitted[1]
file.close()
file2=open("codificato.txt", "rU")
for line in file2:
for word in line.split():
b = word
if a.has_key(b):
print a[b]
d=open("decodificato.txt", "a") #QUI IL FILE DECODIFICATO
d.write(a[b])
d.close()
file2.close()
s = "----"
while s != "_-_-_-_-":
if s == "C":
codifica()
elif s == "d":
decodifica()
s = raw_input(">>")
Cifrario codifica
a|0
b|1
c|2
d|3
e|5
f|8
g|13
h|21
i|34
j|55
k|89
l|144
m|233
n|377
o|610
p|978
q|1597
r|2584
s|4181
t|6765
u|109446
v|11711
w|28657
x|46368
y|75025
z|121393
1|196418
2|317811
3|514299
4|832040
5|1346269
6|2178309
7|3524578
8|5702887
9|9227465
0|14930352
|#
,|24157817
;|39088169
:|63245986
.|102334155
_|165580141
-|267914296
!|433494437
"|701408733
(|1134903170
)|1836311903
=|2971215073
?|4807526976
'|7778742049
è|12586269025
é|20365011074
ò|32951280099
à|53316291173
ù|86267571272
Cifrario decodifica
0|a
1|b
2|c
3|d
5|e
8|f
13|g
21|h
34|i
55|j
89|k
144|l
233|m
377|n
610|o
978|p
1597|q
2584|r
4181|s
6765|t
109446|u
11711|v
28657|w
46368|x
75025|y
121393|z
196418|1
317811|2
514299|3
832040|4
1346269|5
2178309|6
3524578|7
5702887|8
9227465|9
14930352|0
#|
24157817|,
39088169|;
63245986|:
102334155|.
165580141|_
267914296|-
433494437|!
701408733|"
1134903170|(
1836311903|)
2971215073|=
4807526976|?
7778742049|'
12586269025|è
20365011074|é
32951280099|ò
53316291173|à
86267571272|ù