Scrivere su un'unica riga

di il
2 risposte

Scrivere su un'unica riga

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|ù

2 Risposte

  • Re: Scrivere su un'unica riga

    Questa è la sezione per VB.NET ... l'hai letto?
  • Re: Scrivere su un'unica riga

    Devo capire come ho fatto a sbagliare link... potete spostare?

    potete anche cancellare, ho creato una nuova discussione nella sezione appropriata... scusatemi per il disguido
Devi accedere o registrarti per scrivere nel forum
2 risposte