Программа шифрования ASCII в языке Python


Недавно я написал программу, которая считывает данные из csv-файла и помещает его в списки. В процедуру Sub шифрования преобразует символы в ASCII, добавляет 2 затем преобразует их обратно в символы.

import csv

ifile = open("messages.csv","rb")
reader= csv.reader(ifile)

plain_text= []
plain_ascii= []
encrypted_ascii= []
encrypted_text= []
latitude= []
longitude= []

for row in reader:
    latitude.append(row[0])
    longitude.append(row[1])
    plain_text.append(row[2])

encrypted_text=[''.join(chr(ord(ch)+2) for ch in string) for string in 
plain_text]
print plain_text
print encrypted_text

count=0

print ""
while True:
    print ""
    response=int(raw_input("Enter 1 to see the next record, 2 to see the 
previous record or 3 to end the program:"))
    print""
    if response > 3 or response < 1:
        print ("Please respond with one of the set responses.")
    elif response == 3:
        print "Process ended"
        break
    else:
        if response==1:
            count += 1
            if count >= len(plain_text):
                count = 0
        elif response==2:
            count -= 1
            if count < 0:
                count = len(plain_text) - 1
        print ""
        print("Record {0}:".format(count))
        print ""
        print("Latitude: {0}  Longitude: {1}  Unencrypted Text: {2} 
Encrypted Text: {3}".format(latitude[count],longitude[count], 
plain_text[count], encrypted_text[count]))

ifile.close()

Есть ли способ сделать все это намного точнее и проще, и, возможно, любой способ реструктуризации этого?



375
2
задан 28 февраля 2018 в 11:02 Источник Поделиться
Комментарии
2 ответа

Просто несколько заметок о печати, я вижу, что вы не используете скобки, так что я предполагаю, что вы используете питон 2.х. Я хотел бы призвать вас, чтобы переключиться на Python 3.5+ сейчас, как Python 2.х в конце жизни. Однако если вы настаиваете на использовании его

-Держать последовательной на использование круглых скобок

-Вы можете использовать \n внутри строки добавить строки:

print "Hello World!\n"

Если переключиться на Python 3.х можно использовать функцию print и переходим в end параметр, чтобы добавить новую строку после строки:

s = "Hello World!"
print(s, end='\n') #NOTE: @Coal_ points out this is the default
# so if you didn't want there to be a newline you'd have to overwrite
# print(s, end=' ')
# @Solomon, and if you wanted a space between your outputs,
# print(s, end='\n\n')

Таким образом, вы не должны, казалось бы, бесполезно печатать заявления везде.

1
ответ дан 28 февраля 2018 в 02:02 Источник Поделиться

response=int(raw_input("Enter 1 to see the next record, 2 to see the previous record or 3 to end the program:"))
print""
if response > 3 or response < 1:

Когда вы проверяете на неудачу, вместо того, чтобы спрашивать "это один из этих случаев, что я думал, что это плохо", спросите: "это не дело, что хорошие". Делаем бывшего поднимает вопрос о том, что вы подумали обо всем, что может пойти не так. Что, если они входят в поплавок? Строки? Вместо этого сделать:

response = (raw_input("Enter 1 to see the next record, 2 to see the previous record or 3 to end the program:"))
if response not in ['1','2','3']:

Вы не используете целочисленные свойства response, ты просто проверяю, является ли он равным значением сравнения, а не делать математику на нем, поэтому нет необходимости конвертировать в int. Если вы собираетесь конвертировать, делать это после того, как вы проверили корректности ввода.

Вы можете использовать модульные arithematic, чтобы избавиться от некоторых if заявления:

if response=='1':
count += 1
elif response=='2':
count -= 1
count = count%len(plaint_text)

0
ответ дан 28 февраля 2018 в 10:02 Источник Поделиться