我试图创建一个name(string)
函数,它提示用户输入“name”并将其存储在一个名为string的变量中。
` def name(variable_name):
var = variable_name
var = input('Enter a name: ')`
虽然我知道上面的代码不起作用,因为变量不能作为参数传递给参数。你有什么办法吗?
很抱歉,对于类型转换我不熟悉Python以及Stackoverflock。
答案 0 :(得分:1)
def get_name():
return input('Enter a name: ')
my_name = get_name() # my_name var stores the result
如果你试图抽象出提示和潜在的input()
来电,那么以上就是推荐方式。该函数返回该值,您可以选择存储或利用包装器的返回值。
答案 1 :(得分:1)
Python确实让您能够通过globals()
和locals()
来操纵符号表。通过使用这些,您可以使用任意用户提供的名称创建变量,并将其附加到全局范围,如下所示:
def make_var():
var_name = input("Variable name")
globals()[var_name] = 0
您可能还想查看locals()
的内容。
答案 2 :(得分:0)
也许你想要这样的东西:
def name():
var = input('Enter a name: ')
return var
答案 3 :(得分:0)
如果我理解正确,您希望用户输入的文本是Python代码中变量的名称。所以如果我给出我的名字' Chris'应该有一个名为Chris的变量。
我能看到这样做的唯一原因是你试图让你的程序从代码中已经存在的变量中选择,否则我们为变量分配了什么值?
我可以看到四种方法。
1)使用字典:
data_dictionary = dict(Chris=1, Dave=2, John=3)
default_value = 0
var = input('Enter a name: ')
# Get
new_value = data_dictionary.get(var, default_value)
# Set
data_dictionary[var] = default_value
2)使用一个对象(如果你把这段代码写得更好):
class DataClass(object):
default_value = 0
data_class = DataClass()
var = input('Enter a name: ')
# Get
new_value = getattr(data_class, var, data_class.default_value)
# Set
setattr(data_class, var, data_class.default_value)
3)使用exec
(https://docs.python.org/2.0/ref/exec.html)(警告:如果使用不当会造成危险)
default_value = 0
var = input('Enter a name: ')
# Get (with highly inadequate amount of error catching)
exec('new_value = {}'.format(var))
# Set
exec('{0} = {1}'.format(var, default_value))
4)使用eval
(警告:非常危险,特别是如果用户不能100%信任,这可能会被用户用来做几乎任何事情)
Actually I changed my mind, never use eval.
希望其中一个有用。