Есть ли способ изменить переменную в Python на основе ввода, чтобы предотвратить повторение аналогичных блоков кода?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли способ изменить переменную в Python на основе ввода, чтобы предотвратить повторение аналогичных блоков кода?

Сообщение Anonymous »

Я новичок в Python и создал эту программу для вычисления хэша sha256 или sha512 заданного файла и преобразования вычислений в шестнадцатеричный формат.
Она состоит из 5 файлов, 4 из которых являются пользовательскими. модули, а 1 — main_.
У меня есть две функции в разных модулях, но единственная разница в этих функциях — одна переменная. См. ниже:
Из sha256.py

Код: Выделить всё

def get_hash_sha256():
global sha256_hash
filename = input("Enter the file name: ")
sha256_hash = hashlib.sha256()
with open(filename, "rb") as f:
for byte_block in iter(lambda: f.read(4096),b""):
sha256_hash.update(byte_block)
#       print("sha256 valule: \n" + Color.GREEN + sha256_hash.hexdigest())
print(Color.DARKCYAN + "sha256 value has been calculated")
color_reset()
Из sha512.py

Код: Выделить всё

def get_hash_sha512():
global sha512_hash
filename = input("Enter the file name: ")
sha512_hash = hashlib.sha512()
with open(filename, "rb") as f:
for byte_block in iter(lambda: f.read(4096),b""):
sha512_hash.update(byte_block)
#       print("sha512 valule: \n" + Color.GREEN + sha512_hash.hexdigest())
print(Color.DARKCYAN + "sha512 value has been calculated")
color_reset()
Эти функции вызываются в моем файле simple_sha_find.py:

Код: Выделить всё

def which_hash():
sha256_or_sha512 = input("Which hash do you want to calculate: sha256 or sha512? \n")
if sha256_or_sha512 == "sha256":
get_hash_sha256()
verify_checksum_sha256()
elif sha256_or_sha512 == "sha512":
get_hash_sha512()
verify_checksum_sha512()
else:
print("Type either sha256 or sha512. If you type anything else the program will close...like this.")
sys.exit()

if __name__ == "__main__":
which_hash()
Как видите, функции, которые будут вызываться, основаны на вводе пользователя. Если пользователь вводит sha256, он запускает функции из sha256.py, но если он вводит sha512, он запускает функции из sha512.py
Приложение работает, но я знаю, что могу сделать это менее избыточным, но я не знаю как.
Как я могу определить функции get_hash_sha---() иverify_checksum_sha---() один раз, и они будут выполнять соответствующие вычисления на основе выбирает ли пользователь sha256 или sha512?
Пожалуйста, дайте мне знать, если я что-то неясно, и заранее спасибо.
Я выполнил несколько вариантов кодирую эту программу.
Я создал ее как один файл, а также создал различные модули и вызывал функции из этих модулей.
В любом случае У меня были повторения, но я знаю, что это противоречит цели автоматизации.
Может быть, потому что уже поздно и моя концентрация почти иссякла, но я даже не знаю, с чего начать .

Подробнее здесь: https://stackoverflow.com/questions/790 ... event-repe
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»