【问题标题】:Why does my code return 'None' along with the correct output?为什么我的代码会返回 \'None\' 以及正确的输出?
【发布时间】:2023-02-12 14:36:42
【问题描述】:

我有一个程序需要 4 个数字输入并将它们传递给用户定义的函数。第一个值成为列表中的第二个值,第四个值成为列表中的第三个值。该程序应该将输入输出为数字,它们之间有空格。

def swap_values(user_val1, user_val2, user_val3, user_val4):
    newList = [user_val2, user_val1, user_val4, user_val3]
    return print(f'{newList[0]} {newList[1]} {newList[2]} {newList[3]}')

if __name__ == '__main__': 
    val1 = int(input())
    val2 = int(input())
    val3 = int(input())
    val4 = int(input())
    print(swap_values(val1, val2, val3, val4))

虽然我确实得到了输入“8、3、4、2”的正确答案输出,但我也像这样在下面得到“无”

3 8 2 4
None

我应该怎么做才能解决这个问题?

【问题讨论】:

  • 因为您的函数具有将某些内容打印到终端的副作用(由于print),并且它返回print(始终为None)的结果,然后您在调用时print功能。让您的函数返回字符串,而不是打印字符串的结果。

标签: python python-3.x


【解决方案1】:

这是因为函数交换值首先打印值并返回打印函数,它是没有任何这可以通过使用以下代码来解决:

def swap_values(user_val1, user_val2, user_val3, user_val4):
newList = [user_val2, user_val1, user_val4, user_val3]
return f'{newList[0]} {newList[1]} {newList[2]} {newList[3]}'
if __name__ == '__main__': 
    val1 = int(input("val1"))
    val2 = int(input("val2"))
    val3 = int(input("val3"))
    val4 = int(input("val4"))
    print(swap_values(val1, val2, val3, val4))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 2022-11-13
    相关资源
    最近更新 更多