python-3.x 为什么我的代码返回“None”沿着正确的输出?

l3zydbqr  于 2023-02-14  发布在  Python
关注(0)|答案(3)|浏览(150)

我有一个程序,它接受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

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

rqqzpn5f

rqqzpn5f1#

这是因为函数swap_values首先打印值,然后返回打印函数None,这可以通过使用以下代码来修复:

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))
1cklez4t

1cklez4t2#

您有两个print语句。
这条线

return print(f'{newList[0]} {newList[1]} {newList[2]} {newList[3]}')

打印这四个数字,然后返回打印操作的返回值,但是在Python中print没有返回值,所以它是"None",然后这一行

print(swap_values(val1, val2, val3, val4))

打印该返回值。
你可以把swap_values()修改为只返回一个字符串,然后让调用者打印出来;或者你可以打印swap_values()中的值,然后调用那个函数,而不需要在调用周围使用print语句,只是不要同时使用这两种方法。

3okqufwl

3okqufwl3#

打印 print() 的返回值None。
不要在swap_values函数中打印,而是返回交换后的值,然后打印。例如:

def swap_values(user_val1, user_val2, user_val3, user_val4):
    return user_val2, user_val1, user_val4, user_val3

print(*swap_values(1,2,3,4))

输出:

2 1 4 3

相关问题