问题非常简单。对不起,我对此很新。我不允许使用int()。
答案 0 :(得分:1)
您正在寻找的算法是:
initialise number to 0
for each character in str
multiply number by 10
find number of character (ascii value, avaiable from ord(), - 48 is simplest)
add character number to number
当然,您应该检查字符串实际上是否所有数字。
答案 1 :(得分:1)
以下是如何为二进制(base2)数字执行此操作:
>>> bin(12)
'0b1100'
>>> sum([2**i * (ord(ch)-ord('0')) for i, ch in enumerate(reversed('1100'))])
12
答案 2 :(得分:1)
这是一种很好的Pythonic方式。
def str_to_int(s):
if type(s) != str:
raise TypeError("invalid type for str_to_int: {}".format(type(s)))
if not s.isdigit():
raise ValueError("invalid literal for str_to_int: '{}'".format(s))
return sum((ord(char) - 48) * 10**(len(s) - n) for n, char in enumerate(s, start=1))
如果你不关心检查参数以确保它是一个字符串并且只包含数字,那么它可以减少到下面的一行:
str_to_int = lambda s: sum((ord(char) - 48) * 10**(len(s) - n) for n, char in enumerate(s, start=1))