LeetCode FizzBuzz问题:代码用双引号却输出单引号的原因
LeetCode FizzBuzz问题:单引号输出与结果为空的问题
问题描述
在LeetCode上解决FizzBuzz问题时,代码中用双引号定义字符串,但运行后stdout输出的数组元素却是单引号格式,同时LeetCode显示的Output为空,与预期结果不符。
代码实现
class Solution: def fizzBuzz(self, n: int) -> List[str]: answer = [] for number in range (1, n+1): if number % 5 == 0 and number % 3 == 0: answer.append("FizzBuzz") elif number % 5 == 0: answer.append("Buzz") elif number % 3 == 0: answer.append("Fizz") else: answer.append(f"{number}") print(answer, end='')
输入输出详情
Runtime: 59 ms
Your input: 3
stdout: ['1', '2', 'Fizz']
Output: []
Expected: ["1","2","Fizz"]
问题原因分析
1. 单引号输出的原因
Python中直接打印列表时,解释器默认用单引号包裹字符串元素,这是Python的内置字符串表示规则,和你代码里用双引号定义字符串无关。双引号和单引号在Python里功能完全等价,只是打印显示格式不同,不影响字符串本身的内容。
2. Output为空的原因
LeetCode题目要求函数返回结果列表,而不是通过print输出。你的代码最后用print把结果打印到stdout,但没有返回列表,导致LeetCode检测到的Output是空数组[]——这才是结果不符的核心问题,单引号只是打印格式差异,不影响结果正确性,但返回方式错误会直接导致题目判错。
解决方法
将代码中的print(answer, end='')替换为return answer,让函数返回生成的列表:
class Solution: def fizzBuzz(self, n: int) -> List[str]: answer = [] for number in range (1, n+1): if number % 5 == 0 and number % 3 == 0: answer.append("FizzBuzz") elif number % 5 == 0: answer.append("Buzz") elif number % 3 == 0: answer.append("Fizz") else: answer.append(f"{number}") return answer
修改后,LeetCode会正确获取函数返回的列表,stdout的单引号显示不影响题目判定——因为平台是根据函数返回值判断结果,而非stdout的打印内容。
内容的提问来源于stack exchange,提问作者user19409398
相关产品推荐
相关产品推荐

