当前位置: 首页 > 面试题库 >

不使用int()将字符串转换为Int

扶文光
2023-03-14
问题内容

我试图实现add2stringssub2stringsmult2strings在Python功能。如果您只是做的话int(string),它们都很容易,但是我想做到这一点而又不引入其他欺骗性的东西Decimal。我当前的想法是使用bytes

还有另一种方法吗?


问题答案:

请参阅atoiC语言中的基础知识:

int myAtoi(char *str)
{
    int res = 0; // Initialize result

    // Iterate through all characters of input string and update result
    for (int i = 0; str[i] != '\0'; ++i)
        res = res*10 + str[i] - '0';

    // return result.
    return res;
}

转换成Python:

def atoi(s):
    rtr=0
    for c in s:
        rtr=rtr*10 + ord(c) - ord('0')

    return rtr

测试一下:

>>> atoi('123456789')
123456789

如果要容纳可选的符号和空格,可以采用以下方式int

def atoi(s):
    rtr, sign=0, 1
    s=s.strip()
    if s[0] in '+-':
        sc, s=s[0], s[1:]
        if sc=='-':
            sign=-1

    for c in s:
        rtr=rtr*10 + ord(c) - ord('0')

    return sign*rtr

现在添加例外,您就在那里!



 类似资料:
  • 我只是无法在c中转换不同的数据类型,我知道c是一种强类型语言,所以我在这里使用了,但我面临一个问题,错误消息是 从“std::string{aka std::basic_string}类型转换为“int”类型的static_

  • 注意:这个问题包含不建议使用的前1.0代码!不过,答案是正确的。 要在Rust中将转换为,我可以执行以下操作: 我知道如何将转换为的唯一方法是获取其中的一个片段,然后像这样使用: 有没有办法直接将转换为?

  • 问题内容: 该应用程序基本上通过输入初始速度和最终速度以及时间来计算加速度,然后使用公式来计算加速度。但是,由于文本框中的值是字符串,所以我无法将它们转换为整数。 问题答案: 基本概念, 请注意,这仅在Swift 1.x中有效 Swift 4更新

  • 我有代码: 首先,它接受给定的字符串并拆分为数组。接下来,每个数字都被转换成一个整数,最后,所有的数字都相互相加。它工作得很好,但代码有点长。所以我想到了在使用reduce的同时使用map函数并将String转换为Int,如下所示: 输出为: 因此,我的问题是:为什么我不能在使用reduce()时将字符串转换为整数?

  • 问题内容: 使用BufferedReader时如何将String转换为int?据我记得,它类似于以下内容: 但由于某种原因,它无法正常工作。 错误消息显示: 找不到适合的方法 它也说不适用 问题答案: 一个需要在构造函数中指定。该转弯字节流通向字符流。正如其他人提到的那样,您应该意识到可以从这段代码中引发的异常,例如IOException和NumberFormatException。

  • 问题内容: 基本上,我有一个单线将其转换为字符串“ 1、2、3”(我需要定界符是自定义的,有时是,有时是等)。以下是我能想到的最好的方法。在线搜索,似乎找不到更好的答案。 在大多数语言中,对此都有内置的支持,例如: 蟒蛇: 走: 当然,肯定有一个实用工具可以让我用单线执行此操作吗? 我知道有,但是仅当A已经[]字符串时才有效。 问题答案: 转换 到一行分隔字符串,例如 “ 1,2,3,4,5,6,

  • 如何将字符串值转换为int?我正在获取。 结果应该类似于。

  • 问题内容: 我有一个带有ID号的大型数据框: 这些现在都是字符串。 我想转换为不使用循环-为此我使用。 问题是我的某些行包含无法转换为的脏数据,例如 如何(不使用循环)删除这些类型的事件,以便我可以放心使用? 问题答案: 您需要向功能添加参数: 如果是列: 但非数字会转换为,因此所有值都是。 对于需要转换到一些值,例如,然后转换为: 样品: 编辑:如果使用0.25+大熊猫,则可以使用: