2017-03-29 97 views
0

我会开始说我查找了这个问题的答案,不幸的是,我只是无法理解他们,或者他们似乎没有为我工作。这当然归结于我而不是回答问题的人,所以我提前道歉。从一个函数调用变量到另一个函数(Python)

所以几乎我试图调用由用户指定从一个功能到另一个变量,我举一个例子:

def function_one(): 
    a = input("What is your name?") 
    return a 
def function_two(): 
    print("Nice to meet you, "a) 

function_one() 
function_two() 

这当然不工作,我我确信这是我自己的愚蠢,我不知道为什么起初,因为我看到其他人说简单地返回变量,我做了!

我也尝试从另一个函数调用的变量,例如:

def function_two() 
    a = function_one() 

但我意识到这是很愚蠢的,因为我只是在分配该功能作为,所以它不是去上班。

我很感激一些见解,我知道这些并不是你所期待的那种问题,但是......我是无能的。

+2

_“但我意识到[...],所以它不会起作用。”但是你真的运行它,看它是否工作?如果没有,我建议现在尝试;-) – Kevin

+0

你的第二个打印语句有问题。由于您没有识别出您遇到的错误,因此很难判断这是抄录错误还是实际问题的一部分。 – glibdud

+0

第二个函数(第二个函数内部的调用函数)将起作用,并不是那么糟糕。为什么第一个不工作:它返回输入,但你不保存该输入,你必须将它分配给一些变量:'a = function_one()'。对于第二个函数,您需要将存储在a中的值传递给函数,或者使用'global a'来使用全局变量。要传递该函数:'def function_two(a)'将意味着它将变量'a'作为参数,并将其称为'function_two(a)'将给出结果。你也可以做一些像'function_two(function_one())' –

回答

2

我想你想要做的是采取用户的输入,将其存储在一个变量,然后使用该变量问候用户:

def ask_for_users_name(): 
    name = input("What is your name?") 
    return name 
def greet_user(name): 
    print("Nice to meet you, " + name) 

users_name = ask_for_users_name() 
greet_user(users_name) 

需要注意的一个重要的事情是,我不得不级联名称字符串“很高兴见到你”,使用+运算符。

编辑:

要回答在评论这个问题,你可以做这样的事情在这种情况下:

def ask_for_user_info(): 
    name = input("What is your name?") 
    age = input("What is your age?") 
    return name, age 

user_name, user_age = ask_for_user_info() 

最佳做法是使函数只做一两件事,对于很多原因之一是,该功能的名称通常取代了内联注释任何需要:

def ask_for_user_name(): 
    name = input("What is your name?") 
    return name 
def ask_for_user_age(): 
    age = input("What is your age?") 
    return age 

在ask_for_user_info()方法的情况下,不立即CL耳朵从名字上究竟做了什么。

编辑2:

然后,您可以使用这两个功能,这样,以任何顺序:

age = ask_for_user_age() 
name = ask_for_user_name() 

name = ask_for_user_name() 

age = ask_for_user_name() 
+0

啊,这很有道理。但是如果函数'ask_for_users_name'里面还有其他事情发生了(我知道这可能是坏习惯,但是理论上),如果它在第一个函数中询问了你的年龄等,当分配变量时不会重复users_name到那个函数? –

+0

嘿好的问题,我会编辑原始帖子来回答你的问题。我真的不能在代码中张贴好代码 – Outis

+0

对不起,对此我感激不尽,但我还有一个问题。我知道你想打电话给他们,但是如果你有姓名和年龄,但你只想打电话给年龄,而不是姓名?那么它将如何工作?因为我在这里看到的我不能称呼年龄而不叫名字,是这样吗? –

0

你做有它。这应该工作。

def function_two(): 
    a = function_one() 
    print('hi {}'.format(a)) 

然后

>>>function_two() 
0

另一种方法是使用:

def ask_for_users_name(): 
     name = input("What is your name?") 
     greet_user(name) 

def greet_user(user_name): 
    print("Nice to meet you,"+user_name) 

ask_for_users_name() 

您只需拨打ask_for_users_name()结尾。

编辑:

greet_user_()是一个无效的功能,这意味着它不返回任何东西。在这种情况下,它所做的只是接收传递给它的输入并将其打印出来。如果你想执行其他操作,你可以传递其他参数,或保持它的方式。

版本1:

def ask_for_users_name(): 
    name = input("What is your name?") 
    age = int(input("What is your age? ")) 
    print("Your age is ", age) 
    greet_user(name) 

def greet_user(user_name): 
    print("Nice to meet you,"+user_name) 

ask_for_users_name() 

在第1版,我们还在利用greet_user()只打印一两件事,在ask_for_users_name执行另一个打印操作()。

版本2:

def ask_for_users_name(): 
    name = input("What is your name?") 
    age = int(input("What is your age? ")) 
    greet_user(name, age) 

def greet_user(user_name, user_age): 
    print("Nice to meet you,"+user_name) 
    print("Your age is", user_age) 

ask_for_users_name() 

在2版本中,我们通过年龄和名字greet_user(),这反过来又打印出传递的变量。我希望这有帮助。

+0

谢谢你的回答!然而,如果ask_for_users_name()函数也包含其他部分,说它是一个函数,它也要求你的年龄(我知道这是不好的做法),我想从函数中得到的唯一东西就是名字,那么呢? –

+0

请在原始回复中查看我的编辑。 – Ajax1234

相关问题