Jadi, saya punya file txt dengan kata 'QWE'. Saya mencoba mencetaknya terbalik, tetapi [::-1} tidak berfungsi dalam kasus ini.

file = open('10asciitxt.txt', 'r') 
      
    while 1: 
      
    # read by character 
    char = file.read(1)
    if not char:  
        break  
    res=128-ord(char)  
    print(char," = ",ord(char),"| 128 - ",ord(char)," = ",res," Res: ",chr(res))
file.close()

Keluaran:

Q  =  81 | 128 -  81  =  47  Res:  /
W  =  87 | 128 -  87  =  41  Res:  )
E  =  69 | 128 -  69  =  59  Res:  ;

Keluaran yang diharapkan:

E  =  69 | 128 -  69  =  59  Res:  ;
W  =  87 | 128 -  87  =  41  Res:  )
Q  =  81 | 128 -  81  =  47  Res:  /
0
NoemonGR 9 Januari 2021, 05:51

3 jawaban

Jawaban Terbaik

Anda dapat membaca seluruh file sekaligus dan kemudian beralih ke belakang

file = open('10asciitxt.txt', 'r') 

file_contents = file.readlines()

            #### Reverse File Contents
for line in file_contents[::-1]:
    for char in line:
        if not char.isspace():
           res=128-ord(char)  
           print(char," = ",ord(char),"| 128 - ",ord(char)," = ",res," Res: ",chr(res))

file.close()
1
Vaebhav 9 Januari 2021, 03:02

Menggunakan readlines() dan read() membantu karena menyimpan file teks dalam daftar maka Anda cukup membalikkannya.

file = open('sample.txt', 'r') 
ls = file.readlines() #creates list of lines
ls.reverse() # directly reverse it
print('/n'.join(ls)) #join it by specific operator

Ref:https://www.w3schools.com/python/ref_file_readlines.asp

2
Yash 9 Januari 2021, 03:03

Bagaimana cara membaca file dalam urutan terbalik? dapat membantu.

Atau Anda dapat membaca semua karakter file ke dalam daftar jika ukurannya tidak besar, sebagai berikut:

chars = [char for char in open('10asciitxt.txt').read()]
for char in chars[::-1]:
    i = ord(char)
    res = 128 - i  
    print(char, " = ", i, "| 128 - ", i, " = " , res, " Res: ", chr(res))
1
Yang Liu 9 Januari 2021, 03:06