【问题标题】:Python code working in one editor and not on the otherPython 代码在一个编辑器中工作,而不是在另一个编辑器中工作
【发布时间】:2020-12-16 17:11:44
【问题描述】:

我是学习 Python 的新手。在这段代码中,我试图添加 2 个数字字符串。在我的编辑器 PyCharm 的第 13 行,我写了下面的语句。它没有用。我试着写 求和:int = int(x) +int(y) + int(left_over)

它奏效了。但是,在 leetcode 上,它不起作用。它说第 14 行有一个无效的语法。在 leetcode 中,我也是用 Python 编写的,而不是 Python3。

class Solution(object):
    def addStrings(num1, num2):
        last = ""
        left_over = 0
        i = len(num1) - 1
        j = len(num2) - 1
        while (i >= 0) or (j >= 0):
            x = 0
            y = 0
            if i >= 0:
                x = num1[i]
            if j >= 0:
                y = num2[j]
            **sumation = x + y + left_over
            left_over = sumation // 10
            last = str(sumation % 10) + last
            i -= 1
            j -= 1
        if left_over > 0:
            last = str(left_over) + last
        return last
    

【问题讨论】:

  • “它说语法无效” - 请提供完整的错误信息
  • **sumation = ... 语法无效。
  • **sumation = ...中删除**

标签: python string numbers syntax-error addition


【解决方案1】:

这行有个小bug

**sumation = x + y + left_over

我猜你想这样做:

summation = int(x) + int(y) + left_over

另外,您可能忘记在addStrings() 中传递self

def addStrings(self, num1, num2):

刚刚测试了你的解决方案,通过了 LeetCode:

class Solution(object):
    def addStrings(self, num1, num2):
        last = ""
        left_over = 0
        i = len(num1) - 1
        j = len(num2) - 1
        while (i >= 0) or (j >= 0):
            x = 0
            y = 0
            if i >= 0:
                x = num1[i]
            if j >= 0:
                y = num2[j]

            summation = int(x) + int(y) + left_over
            left_over = summation // 10
            last = str(summation % 10) + last
            i -= 1
            j -= 1
        if left_over > 0:
            last = str(left_over) + last
        return last


print(Solution().addStrings("100", "500"))

打印,

600

这也可以正常工作:

class Solution:
    def addStrings(self, num1, num2):
        length1, length2 = len(num1), len(num2)
        reversed_num1, reversed_num2 = num1[::-1], num2[::-1]
        max_length = max(length1, length2)
        added_num = ''
        carry = index = 0
        while index < max_length or carry:
            digit1 = int(reversed_num1[index]) if index < length1 else 0
            digit2 = int(reversed_num2[index]) if index < length2 else 0
            added_digit = (digit1 + digit2 + carry) % 10
            carry = (digit1 + digit2 + carry) // 10
            added_num += str(added_digit)
            index += 1

        return added_num[::-1]

这也是我使用的一个 Python 模板:

from typing import List
import collections
import itertools
import functools
import math
import string
import random
import bisect
import re
import operator
import heapq
import queue

from queue import PriorityQueue
from itertools import combinations, permutations
from functools import lru_cache
from collections import defaultdict
from collections import OrderedDict
from collections import deque
from collections import Counter


class Solution(object):
    def addStrings(self, num1, num2):
        last = ""
        left_over = 0
        i = len(num1) - 1
        j = len(num2) - 1
        while (i >= 0) or (j >= 0):
            x = 0
            y = 0
            if i >= 0:
                x = num1[i]
            if j >= 0:
                y = num2[j]

            summation = int(x) + int(y) + left_over
            left_over = summation // 10
            last = str(summation % 10) + last
            i -= 1
            j -= 1
        if left_over > 0:
            last = str(left_over) + last
        return last


print(Solution().addStrings("100", "500"))  # 600
# print(Solution().()) #
# print(Solution().()) #
# print(Solution().()) #
# print(Solution().()) #


参考文献

  • 有关更多详细信息,请参阅Discussion Board,您可以在其中找到大量解释清楚且公认的解决方案,其中包含各种languages,包括低复杂度算法和渐近runtime/memory 分析@ 987654325@, 2.

【讨论】:

  • 谢谢。但是我有一个小问题,如果我已经将 x 和 y 初始化为 0,为什么还要强制转换它们,Python 不承认它们是整数吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多