如何在def函数中使用input函数?

7

我是一名新手程序员。我在使用Python编写代码(使用def函数)时遇到了一些问题。

基本上,该代码需要从两个数字中输出较小的数字。

问题: 编写代码以执行以下任务:

  1. 定义一个名为smaller_num的函数,它接受两个数字来确定并返回其中较小的数字。
    询问用户输入两个数字
    使用该函数确定较小的数字并显示结果

所以我使用了用户输入而不是调用函数并将值添加到变量中。

这是我代码的样子:

def smaller_num(x,y):
    if x>y:
        number= y
    else:
        number= x
    return number

smaller_num(x= input("Enter first number:-") ,y= input("Enter second number:-"))

print("The smaller number between " +  str(x) + " and " + str(y) + " is " + str(smaller_num))

我该如何纠正它?目前它无法工作,因为“x”未定义。但我感觉我在def函数和input函数中都清楚地定义了它们。那么我该如何解决这个问题呢?
感谢回答这个问题的人。

3
请格式化您的代码。 - kvorobiev
2
我必须非常赞扬你,因为你展示了你尝试过什么,而不是简单地问我们如何解决你的任务。干得好 :)。 - TerryA
6个回答

13

你实际上并没有全局定义变量xy,你只是在函数中进行了定义,如下所示:def smaller_num(x, y)

当你这样做时:smaller_num(x= input("Enter first number:-") ,y= input("Enter second number:-")),你并没有创建名为xy的变量,而只是为你的函数创建了参数。

要修复你的代码,请在调用函数之前创建变量xy

def smaller_num(x, y): ## Can be rephrased to  def smaller_num(x, y):
    if x > y:          ##                          if x > y:
        number = y     ##                              return y
    else:              ##                          else:
        number = x     ##                              return x
return number

x = input("Enter first number:-")
y = input("Enter second number:-")
result = smaller_num(x, y)
print("The smaller number between " +  str(x) + " and " + str(y) + " is " + str(result))

你的代码无法正常工作的另一个原因是你没有将函数返回的值重新赋值给变量。当你从函数中 return 一些东西,并且再次调用函数时,你需要将这个值赋给一个变量,就像我所做的那样:result = smaller_num(x, y)

当你调用函数时,你从未将返回值赋给变量,因此它已经被浪费了。


此外,你正在使用Python 3还是2.7?在Python 3中,使用 input() 将返回一个字符串,如果你想将其转换为整数,可以在 input() 函数周围调用 int()


我非常希望能得到反馈,了解为什么我的帖子被downvote了,谢谢 :) - TerryA
这不是正确的,你可以在参数中调用和分配x和y作为raw_input,它完美地运行。唯一的问题是缺少结果存储。 - SuperBiasedMan
@SuperBiasedMan 除非我读错了代码,否则我指出的应该是一个错误,因为在最后一行中他说 str(x),但这从未被全局创建。str(y)也是一样的。 - TerryA
哦,糟糕。我以为你的意思是使用raw_input作为参数调用函数是个问题。我错过了代码中再次调用xy的那一行。 - SuperBiasedMan
@SuperBiasedMan 哈哈,你的回答也错过了 :P - TerryA
显示剩余2条评论

3
这将有效:
def smaller_num(x,y):

    if x>y:
        number= y
    else:
        number= x
    return number


x = input("Enter first number:-")

y = input("Enter second number:-")

smaller = smaller_num(x,y)

print("The smaller number between " +  str(x) + " and " + str(y) + " is " + str(smaller))

1
这应该可以工作:

def smaller_num(x,y):
    if x>y:
        number = y
    else:
        number = x
    return number

x = input("Enter first number:-")
y = input("Enter second number:-")

print("The smaller number between " +  str(x) + " and " + str(y) + " is " + str(smaller_num(x,y)))

1

def smaller_num(x,y):
    if x>=y:
        number = y
    else:
        number = x
    return number

x = input("Enter first number:-")
y = input("Enter second number:-")
print("The smaller number between " +  str(x) + " and " + str(y) + " is " + str(smaller_num(x,y)))


0
def smaller_num():
    x=int(input('Enter the first number: '))
    y=int(input('Enter the second number: '))
    if x<y:
        return x
    else:
        return y
print('The smaller number is: ',smaller_num())

嗨,如果您能帮助我们理解您的代码是如何解决 OP 的问题的,那将非常棒! - Simas Joneliunas

0
def smaller_num(x,y):
    if x>y:
        number= y
    else:
        number= x
    return number

k=smaller_num(x= input("Enter first number:-") ,y= input("Enter second number:-"))

print("The smaller number between x  & y  is ", k)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接