代码输出正确结果却附带None的原因及解决方法
解决函数返回print导致额外输出None的问题
你遇到的None是因为两处print操作叠加导致的:
swap_values函数中,你返回的是print()函数的执行结果,而**print()函数本身的返回值永远是None**- 主程序里你又调用了
print(swap_values(...)),相当于先执行函数内部的print输出正确结果,接着又打印了函数返回的None
下面提供两种可行的修复方案:
方案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()) val2 = int(input()) val3 = int(input()) val4 = int(input()) print(swap_values(val1, val2, val3, val4))
方案2:函数内部直接打印,主程序仅调用函数
如果不需要复用交换后的结果,直接在函数内部完成打印,主程序只调用函数即可:
def swap_values(user_val1, user_val2, user_val3, user_val4): newList = [user_val2, user_val1, user_val4, user_val3] 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()) swap_values(val1, val2, val3, val4)
两种方案都能解决问题,可根据实际需求选择。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

