305680663 发表于 2021-1-6 22:19:38

求大神来帮助看看是什么问题?

def judge(i, b):
    if i == '':
      i = b
      print('默认:'+ i)
    else:
      print('输入为:'+ i)

product_name = input('请输入品名,默认是花盆:')   
judge(product_name, '花盆')
print('品名是', product_name)

##如果直接按回车(也就是默认),变量product_name无法被赋值。请问是如何解决。运行结果如下##

请输入品名,默认花盆:
默认:花盆
品名是

昨非 发表于 2021-1-6 22:27:28

def judge(i, b):
    if i == '':
      i = b
      print('默认:'+ i)
    else:
      print('输入为:'+ i)
    return i

product_name = input('请输入品名,默认是花盆:')   
product_name = judge(product_name, '花盆')#这里把i的值返回给product_name就好了
print('品名是', product_name)

昨非 发表于 2021-1-6 22:30:33

原因在于,函数被调用时形参i的变化,不会改变实际参数product_name,
所以你给i赋的默认“花盆”只改变了 i,通过返回值才能修改product_name

305680663 发表于 2021-1-6 22:32:44

昨非 发表于 2021-1-6 22:30
原因在于,函数被调用时形参i的变化,不会改变实际参数product_name,
所以你给i赋的默认“花盆”只改变了 ...

你好,return i,还是不管用,请问能否指导下如何修改?

昨非 发表于 2021-1-6 22:34:18

实际上,默认名字大可不必通过函数的第二个参数设置
def judge(i):
    if i == '':
      print('默认:花盆')
      return '花盆'
    else:
      print('输入为:'+ i)
      return i
product_name = input('请输入品名,默认是花盆:')   
product_name = judge(product_name)
print('品名是', product_name)

305680663 发表于 2021-1-6 22:35:16

昨非 发表于 2021-1-6 22:34
实际上,默认名字大可不必通过函数的第二个参数设置

太感谢了!搞定了,谢谢指导!

昨非 发表于 2021-1-6 22:35:29

305680663 发表于 2021-1-6 22:32
你好,return i,还是不管用,请问能否指导下如何修改?

麻烦说明一下return i,还是不管用是啥意思

昨非 发表于 2021-1-6 22:37:29

305680663 发表于 2021-1-6 22:35
太感谢了!搞定了,谢谢指导!

解决了就好

305680663 发表于 2021-1-6 22:37:35

昨非 发表于 2021-1-6 22:34
实际上,默认名字大可不必通过函数的第二个参数设置

因为这个函数我需要设置不同的默认值,所以加了第二个参数。

昨非 发表于 2021-1-6 22:38:43

305680663 发表于 2021-1-6 22:37
因为这个函数我需要设置不同的默认值,所以加了第二个参数。

那就按照上个回复的那样改吧
加个返回值来修改product_name
页: [1]
查看完整版本: 求大神来帮助看看是什么问题?