Python中while循环内if语句未执行问题求助(井字棋场景)
为什么我的player_input函数在文本编辑器里没显示预期结果?
嘿,我完全懂你作为编程新手遇到这种跨环境差异问题的困惑!先给你吃颗定心丸:你的if语句绝对是执行了的——不然Jupyter Notebook里也不可能正常返回元组。问题的核心其实是Jupyter和普通文本编辑器(比如VS Code、PyCharm等)对函数返回值的处理逻辑不一样:
- 在Jupyter Notebook里,只要你调用了函数,它会自动帮你打印出函数的返回值,哪怕你没写
print()语句 - 但在普通的
.py脚本文件里,函数执行完返回值后,如果你没有主动去打印或者使用这个返回值,程序就会默默结束,你看不到任何输出,看起来就像if语句没生效一样
给你两个简单的解决办法:
办法1:主动打印函数的返回值
修改调用函数的代码,把返回值打印出来:
def player_input(): marker = " " while marker != "X" and marker != "O": marker = input("Player 1: Do you want me to play X or O? ").upper() if marker == "X": return ("X", "O") else: return ("O", "X") # 调用函数并打印结果 result = player_input() print(result) # 或者更直观地分配给变量后打印 p1_marker, p2_marker = player_input() print(f"玩家1用{p1_marker},玩家2用{p2_marker}")
办法2:在函数内部添加调试打印
如果你只是想验证if语句确实在执行,可以在return前加打印语句:
def player_input(): marker = " " while marker != "X" and marker != "O": marker = input("Player 1: Do you want me to play X or O? ").upper() if marker == "X": print("检测到输入X,返回('X', 'O')") return ("X", "O") else: print("检测到输入O,返回('O', 'X')") return ("O", "X") player_input()
你可以试试把修改后的代码在文本编辑器里运行,输入X或者O,就能看到预期的输出啦~本质上不是if语句没执行,只是你没看到返回值的输出而已!
内容的提问来源于stack exchange,提问作者Joydeep
相关产品推荐
相关产品推荐

