gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:06:38 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com