You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 08:45:39