【问题标题】:Issue with a return value in Python [closed]Python中的返回值问题[关闭]
【发布时间】:2021-04-11 16:26:18
【问题描述】:

所以我有一个非常具体的问题:

def check_balance():
    """Check the current user's balance"""

    cursor = connection.cursor()
    balance = cursor.execute('SELECT balance FROM card WHERE number = :number',
                             {'number': self.card_number}).fetchone()[0]
    cursor.close()
    return balance

def close_account():
    """Close account i.e. delete it from the database"""

    cursor = connection.cursor()
    cursor.execute('DELETE FROM card WHERE number = :number', {'number': self.card_number})
    connection.commit()
    cursor.close()
    raise LogOut('The account has been closed!')

try:
    menu_dict = {1: check_balance, 2: add_income, 3: do_transfer, 4: close_account, 5: log_out, 0: exit}
    option = int(input())
    menu_dict.get(option)()
except LogOut as logout:
    print(logout)`

所以,这里我有这个调度程序,它只根据输入值调用一些函数。问题是,例如,check_balance 函数将余额作为整数返回,对,我想将结果打印为“余额:“返回值”。我不能将此函数的返回值更改为字符串,因为它在许多地方主要用作整数。我想知道是否有可能以某种方式实现它。谢谢

【问题讨论】:

  • 请以打印Balance: "return value"的示例更新您的问题
  • @quamrana 哈哈,这是这里的主要问题,我不知道如何以这种方式实现它,所以它会打印'Balance:'这里是 check_balance func 的结果''。我说明了解决它所需的一切。返回类型是整数,我在问题中也说过
  • 您有责任展示一些不起作用的代码。到目前为止,您所拥有的是有效的代码。当你可以展示一些不起作用的东西时,我们就可以开始理解你的意思了。
  • @quamrana 我认为您不理解我的问题的重点。代码无论如何都可以工作。我不需要帮助来使其工作,我正在寻求帮助以按照我在问题中描述的方式打印输出,仅返回整数的函数的输出如何帮助您?此外,我什至做不到,因为正如我所说,这就是我需要帮助的,以这种模式打印它:'Balance: "return value"'。我希望现在很清楚
  • 一点也不。我建议您现有的功能(check_balanceadd_income 等)很好。如果你需要打印一些东西,那么由你来演示something。您甚至可以从@I4sh 得到一个很好的答案,其中确实 包含一些print() 语句。

标签: python return


【解决方案1】:

假设

...
value = menu_dict.get(option)()

根据您使用的 Python 版本,您可以使用以下任何一种。

f-字符串

print(f"Balance: {value}")

str.format()

print("Balance: {}".format(value))

旧式格式

print('Balance: %i' % value)

或普通的旧转换和连接字符串

print("Balance: " + str(value))

更多信息: https://docs.python.org/3/tutorial/inputoutput.html

【讨论】:

  • 这正是我作为临时解决方案提出的解决方案,它只是完成它的工作,如果可以在没有附加条件的情况下以另一种方式实现它,我正在尝试获取任何信息,也许会改变一些东西在函数本身中
【解决方案2】:

另一种选择是更改您的调用方式:

def check_balance():
    return 42
def close_account():
    print('account closed')
    
menu_dict = {1: lambda: print(check_balance()), 4: close_account}
option = int(input('Select 1 or 4: '))
menu_dict.get(option)()

这里我使用lambda 只打印来自check_balance() 的返回值

【讨论】:

  • 非常感谢您的帮助,这个解决方案正是我想要的。它很好,很整洁。十分感谢。你对我的技能做出了重要贡献。我很怀疑我能否在其他地方找到如此具体的东西。祝你好运,再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-11
  • 1970-01-01
  • 1970-01-01
  • 2010-12-08
  • 2021-08-10
  • 2019-06-27
  • 2017-06-09
相关资源
最近更新 更多