python - 在 Python 函数中使用输入语句作为参数

标签 python python-3.x parameters user-input

我正在尝试使用某些输入语句的结果作为函数中的参数。我尝试将输入语句放在函数之前,然后调用该函数,如下所示:

s=input("Enter the message:")
raw_key=input("Enter the raw key for columnar transposition:")
method=input("Enter the key generation method:")

def encryptColumnar(s,raw_key,method):
    if method==1:
       numkey=key1(raw_key)
    if method==2:
        numkey=key2(raw_key)
    return(columnar(s,numkey))

encryptColumnar(s,raw_key,method)

但它只是给了我错误UnboundLocalError:赋值前引用的局部变量“numkey”。如果我只是将输入语句放在函数之前,它们会提示我输入,但它们不会认识到输入应该用作函数的参数。

非常感谢您的帮助!

编辑:新代码:

这是我目前正在使用的代码:

s=input("Enter the message:")
raw_key=input("Enter the raw key for columnar transposition:")
method=input("Enter the key generation method:")

def encryptColumnar(s,raw_key,method):
    if method=='1':
       numkey=key1(raw_key)
    if method=='2':
        numkey=key2(raw_key)
    return(columnar(s,numkey))

encryptColumnar(s,raw_key,method)

它不再给我 UnboundLocalError,但在我将参数提供给输入语句提示后,它也不会打印任何内容。

最佳答案

如果您在 Python 3.x 上运行此程序,input()不会像 Python 2 版本那样 eval() 用户的响应 - 它将作为字符串返回(它的行为基本上类似于 Python 2 的 raw_input)。因此,您的条件 method == 1 等永远不会得到满足,导致 numkey 未定义。

所以你必须选择:

  • 将用户的响应转换为 int 并针对整数进行测试:
import sys

method = input("Enter the key generation method:")

try:
    method = int(method)
except ValueError:
    print("You need to enter an integer!")
    sys.exit(1)

# ...

if method == 1:
    # ...
  • 或者您按原样接受用户的输入,并根据字符串值进行测试:
import sys

method = input("Enter the key generation method:")

if method == '1':
    # ...
elif method == '2':
    # ...
else:
    print("Unknown method!")
    sys.exit(1)

请参阅 exception handling 上的文档有关 except 语句的详细信息以及 if statement 上的文档有关 elif 子句的详细信息。它们与您的问题并不严格相关,但正如 @TheSoundDefense 指出的那样,代码的错误处理可以稍微改进,所以就这样吧;-)

关于python - 在 Python 函数中使用输入语句作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24874916/

相关文章:

python - 从 URL 中查找字符串中的所有匹配词

python - 如何在 TF 2.2 中创建自定义 PreprocessingLayer

python - 比较列表中整数与给定值的差异

python - 请求响应中的非 'ascii' 字符

python - 如何在python中的while循环语句中使用迭代器

Java:自定义方法参数问题

powershell - 将 PowerShell 变量作为 cmdlet 参数传递

python - 将元素/键分配给字典

Javascript:哪些参数被传递给函数?

python-3.x - 来自 sklearn 的机器学习