Python - User input for name of a variable to pass as an argument to a function

后端 未结 3 1364
轻奢々
轻奢々 2021-01-14 23:06

I have a question here which is based around user input to scripts and passing this user-input to functions.

I have a script, within which I have defined a function.

相关标签:
3条回答
  • 2021-01-14 23:50

    Use a dictionary, mapping strings to objects:

    tbl1, tbl2 = [1 ,2 ,3], [4 ,5 ,6]
    args = {'tbl1': tbl1 ,"tbl2" :tbl2}
    # show tables ......
    
    inp = input("Choose table")
    
    
    def foo(var):
        print(var)
    
    
    foo(args[inp])
    

    You will want to do error checking to make sure the user actually enters something valid.

    0 讨论(0)
  • 2021-01-14 23:50

    I think you can take advantage of python's global() or locals() feature.

    here's an example:

    from random import choice as rc
    
    
    
    def your_function(variable):
        if variable in local_keys:
            print(variable, " = ", local_variables[variable])
        else:
            print("Your input is not a defined variable")
        return
    
    #randomly populate the variables
    item1 = rc(range(20))
    item2 = rc(range(20))
    item3 = rc(range(20))
    item4 = rc(range(20)) 
    item5 = rc(range(20))
    item5 = rc(range(20))
    
    user_variable = input("Input the variable name: ")
    
    local_variables = locals() # you may have to use globals instead
    local_keys = list(local_variables.keys())
    
    your_function(user_variable)
    
    0 讨论(0)
  • 2021-01-15 00:02

    with raw_input the input is just a string

    table2 = range(3)
    variable_name = raw_input('Enter Variable Name: ')
    def function(list_object):
        print list_object
    
    function(globals()[variable_name])
    

    with input() the input data given by the user is evaluated, be sure that the all the possible input lists are declared before asking for user input, other wise you end up getting an NameError

    table2 = range(3)
    variable_name = input('Enter Variable Name: ')
    def function(list_object):
        print list_object
    
    function(variable_name)
    

    globals() function returns a dictionary of all the objects defined in the module. you can get the respective object by passing the variable name as a key.

    0 讨论(0)
提交回复
热议问题