Python打印含\n的字符串元组时无法正常换行问题求解
问题根因
你的代码存在两处明显错误,是导致换行失效、判断不符合预期的直接原因:
noRulesQuestion定义错误:你在括号内用逗号分隔多段带\n的文本,这种写法不会把多段文本拼接成一个完整字符串,而是生成了一个包含3个字符串元素的元组。当你给print()传入元组时,Python会输出元组的结构化表示形式,不会解析字符串内部的\n转义符,因此你会看到\n被原样打印在输出中。- 分支判断逻辑错误:
if rulesQuestion == "No" and "no"是典型的初学者逻辑写法错误,Python中非空字符串会被判定为布尔真,这行代码实际等价于if (rulesQuestion == "No") and True,用户输入小写no时根本无法进入对应分支。
修复方法
方案1(推荐):用三引号直接定义多行字符串
三引号包裹的字符串会保留内部的自然换行,不需要手动插入\n,写法最简洁,同时修正判断逻辑兼容用户的大小写输入:
noRulesQuestion = """Each player rolls two dice. If the scores on the two dice are different, they are added. If they are the same then the score is increased be 50% (so two 3s would score a 9). If one of the scores is greater than 12 the other player automatically wins. If one of the scores is equal to twelve, that player wins.""" while True: rulesQuestion = input("Do you know the rules? Type Yes or No: ").strip() # 统一转小写判断,兼容No、NO、no等各种大小写输入 if rulesQuestion.lower() == "no": print(noRulesQuestion) break
方案2:保留原有单行拆分写法,去掉分隔用的逗号
Python会自动拼接括号内相邻的字符串字面量,只要去掉逗号,就不会生成元组,\n也能正常被解析:
# 注意:所有文本段之间不要加逗号,相邻字符串会自动拼接为一个完整字符串 noRulesQuestion = ("Each player rolls two dice. If the scores on the two dice are different, they are added. If they are the same then the score is increased be 50% (so two 3s would score a 9).\n" "If one of the scores is greater than 12 the other player automatically wins.\n" "If one of the scores is equal to twelve, that player wins.")
内容的提问来源于stack exchange,提问作者jxc
相关产品推荐
相关产品推荐

