根据 Python 中的用户输入执行特定功能
Execute specific function based on user input in Python
我正在制作一个 python 脚本,该脚本使用用户在输入中使用 hashlib 指定的算法对字符串进行哈希处理。在对字符串进行哈希处理后,无论用户选择何种哈希算法,我都想对其执行相同的操作。因此,我想为它创建一个函数,而不是重复代码,但不知道如何根据输入更改内置哈希函数。我的代码现在看起来像这样:
current_algorithm = input('Hash algorithm: ')
if current_algorithm == 'md5':
hashed = hashlib.md5(word).hexdigest()
# Execute the same code here
elif current_algorithm == 'sha256':
hashed = hashlib.sha256(word).hexdigest()
# Execute the same code here
elif current_algorithm == 'sha512':
hashed = hashlib.sha512(word).hexdigest()
# Execute the same code here
函数 hashlib.algorithm(word).hexdigest()
必须根据用户选择的算法进行更改。例如,如果用户选择 sha512,代码将如下所示:hashlib.sha512(word).hexdigest()
,相反,如果用户选择 md5,则代码将如下所示:hashlib.md5(word).hexdigest()
等等。但是,这些行下的代码完全相同,现在我重复了 3 次,如果将来添加更多算法,可能会重复更多次。因此,如何制作一个根据用户输入更改算法的函数,这样我就不必重复那么多代码了?我想利用争论,但不知道如何解决。这是我的想法,但不会起作用,因为您无法更改内置方法:
def func(algorithm):
hashlib.algorithm(word).hexdigest()
# Execute the same code here
if current_algorithm == 'md5':
func(current_algorithm)
elif current_algorithm == 'sha256':
func(current_algorithm)
elif current_algorithm == 'sha512':
func(current_algorithm)
然后,在每个 if 语句下,我将调用该函数并将用户输入(包含哈希算法)作为参数传递给它。
我希望问题很清楚,如果有任何帮助,我们将不胜感激!
您也可以像这样简单地从 if/else
块中提取通用代码:
current_algorithm = input('Hash algorithm: ')
if current_algorithm == 'md5':
hashed = hashlib.md5(word).hexdigest()
elif current_algorithm == 'sha256':
hashed = hashlib.sha256(word).hexdigest()
elif current_algorithm == 'sha512':
hashed = hashlib.sha512(word).hexdigest()
# Execute the same code here (using hashed variable)
使用getattr:
import hashlib
current_algorithm = input('Hash algorithm: ')
try:
hashed = getattr(hashlib, current_algorithm)(word).hexdigest()
except AttributeError:
print('Invalid algorithm choice')
我正在制作一个 python 脚本,该脚本使用用户在输入中使用 hashlib 指定的算法对字符串进行哈希处理。在对字符串进行哈希处理后,无论用户选择何种哈希算法,我都想对其执行相同的操作。因此,我想为它创建一个函数,而不是重复代码,但不知道如何根据输入更改内置哈希函数。我的代码现在看起来像这样:
current_algorithm = input('Hash algorithm: ')
if current_algorithm == 'md5':
hashed = hashlib.md5(word).hexdigest()
# Execute the same code here
elif current_algorithm == 'sha256':
hashed = hashlib.sha256(word).hexdigest()
# Execute the same code here
elif current_algorithm == 'sha512':
hashed = hashlib.sha512(word).hexdigest()
# Execute the same code here
函数 hashlib.algorithm(word).hexdigest()
必须根据用户选择的算法进行更改。例如,如果用户选择 sha512,代码将如下所示:hashlib.sha512(word).hexdigest()
,相反,如果用户选择 md5,则代码将如下所示:hashlib.md5(word).hexdigest()
等等。但是,这些行下的代码完全相同,现在我重复了 3 次,如果将来添加更多算法,可能会重复更多次。因此,如何制作一个根据用户输入更改算法的函数,这样我就不必重复那么多代码了?我想利用争论,但不知道如何解决。这是我的想法,但不会起作用,因为您无法更改内置方法:
def func(algorithm):
hashlib.algorithm(word).hexdigest()
# Execute the same code here
if current_algorithm == 'md5':
func(current_algorithm)
elif current_algorithm == 'sha256':
func(current_algorithm)
elif current_algorithm == 'sha512':
func(current_algorithm)
然后,在每个 if 语句下,我将调用该函数并将用户输入(包含哈希算法)作为参数传递给它。
我希望问题很清楚,如果有任何帮助,我们将不胜感激!
您也可以像这样简单地从 if/else
块中提取通用代码:
current_algorithm = input('Hash algorithm: ')
if current_algorithm == 'md5':
hashed = hashlib.md5(word).hexdigest()
elif current_algorithm == 'sha256':
hashed = hashlib.sha256(word).hexdigest()
elif current_algorithm == 'sha512':
hashed = hashlib.sha512(word).hexdigest()
# Execute the same code here (using hashed variable)
使用getattr:
import hashlib
current_algorithm = input('Hash algorithm: ')
try:
hashed = getattr(hashlib, current_algorithm)(word).hexdigest()
except AttributeError:
print('Invalid algorithm choice')