gpt4 book ai didi

Python 3.x : User Input to Call and Execute a Function

转载 作者:行者123 更新时间:2023-12-01 02:48:47 26 4
gpt4 key购买 nike

有很多与此类似的问题,但没有一个答案解决了我的问题。

我定义了几个解析大型数据集的函数。首先,我调用数据,然后将数据(在 .txt 中表示为行和列)组织到列表中,我将为各个数据条目建立索引。之后,我建立了我的函数,该函数将一次处理一个列表。代码如下:

f = open(fn)
for line in iter(f):

entries = [i for i in line.split() if i]

def function_one():
if entries[0] == 150:
# do something
def function_two():
if entries[1] == 120:
# do something else
def function_three():
if len(entries) > 10:
# do something else

等等。等等

我试图提示用户询问他们想要执行什么函数,因为每个函数返回有关数据集的不同内容。我的尝试如下:

    f_call = input('Enter Function Name: ')
if f_call in locals().keys() and callable(locals()['f_call']):
locals()['f_call']()
else:
print('Function Does Not Exist')

当我运行脚本时,系统会提示我'输入函数名称:',如果我输入'function_one'并返回,它会打印 “函数不存在”。我想看到,如果输入正确,脚本将仅执行用户输入的函数。如果用户输入正确,该函数应该运行并打印解析的数据。

我还尝试使用dict来存储函数,但没有成功。

任何帮助将不胜感激。

最佳答案

根据您的评论,我认为您正在尝试实现以下目标:

def function_one(data):
if data[0] == 150:
pass # do something

def function_two(data):
if data[1] == 120:
pass # do something else

def function_three(data):
if len(data) > 10:
pass # do something entirely different

这定义了接受参数的函数,以便您以后可以重复使用它们。然后你想询问用户在处理数据时使用哪个函数,所以:

while True:  # loop while we don't get a valid input
user_function = input('Enter a function name to use: ') # ask the user for input
if user_function in locals() and callable(locals()[user_function]): # if it exists...
user_function = locals()[user_function] # store a pointer to the function
break # break out of the while loop since we have our valid input
else:
print('Invalid function name, try again...')

最后,您可以加载文件,逐行读取它,将其分割并按照用户决定的函数进行处理:

with open(file_name, "r") as f:
for line in f:
entries = line.split() # no need to check for empty elements
user_function(entries) # call the user selected function and pass `entries` to it

当然,您可以事后进行进一步的处理。

更新 - 这是对上述代码的简单测试,文件 test_file.txt 包含:

tokenized line 1tokenized line 2tokenized line 3

and file_name = "test_file.txt" defined in the file, while the functions are defined as:

def function_one(data):
print("function_one called: {}".format(data))

def function_two(data):
print("function_two called: {}".format(data))

def function_three(data):
print("function_three called: {}".format(data))

如果执行代码,这就是输出/跟踪:

Enter a function name to use: bad_name_on_purposeInvalid function name, try again...Enter a function name to use: function_twofunction_two called: ['tokenized', 'line', '1']function_two called: ['tokenized', 'line', '2']function_two called: ['tokenized', 'line', '3']

关于Python 3.x : User Input to Call and Execute a Function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45017540/

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