0

この関数は、どちらの場合も入力が受け入れ可能であると想定します(つまり、str to intを実行する場合、strには実際のintが含まれていると想定し、その逆も常に機能します。

また、この関数は、int()やstr()などの使いやすい組み込みのPython関数を使用してはなりません。基本的なコーディングと、(rang()のiの場合や条件文などの)defヘッダーと一緒にのみ使用できます。Plsヘルプ。:)

4

4 に答える 4

2
def str2int(s):
    i = 0
    chr2digit = {`j`:j for j in (0,1,2,3,4,5,6,7,8,9)}
    for c in s:
        i = i*10 + chr2digit[c]
    return i


def int2str(i):  # rather easy in Python2
    return `i`

def int2str(i):  # works in Python2 and Python3
    return "%s"%i
于 2012-04-18T00:01:00.810 に答える
1

醜いかもしれませんが、うまくいきます。この関数を参照してください。

>>> def strint(val):
    digits = '0123456789'
    try:
        # Trying to treat it as a string-to-int conversion
        result = 0
        for l in val:
            result = result * 10 + digits.index(l)
    except (TypeError,):
        # There was a type error - we have int instead of string
        result = ''
        while val:
            digit = val % 10
            result = digits[digit] + result
            val = val // 10
        else:
            if not val and not result:
                result = '0'
    return result

>>> strint('123')
123
>>> strint(123)
'123'
>>> strint('0')
0
>>> strint(0)
'0'
于 2012-04-18T00:12:22.043 に答える
0

これはint交換用のみで、すべてを処理するわけではありませんが、宿題なので後はお任せします。を使えばもう少し簡単にできますord

def myint(s):
   x = 0
   for ch in s:
      if ch == '0': x = x * 10 + 0
      if ch == '1': x = x * 10 + 1
      if ch == '2': x = x * 10 + 2
      if ch == '3': x = x * 10 + 3
      if ch == '4': x = x * 10 + 4
      if ch == '5': x = x * 10 + 5
      if ch == '6': x = x * 10 + 6
      if ch == '7': x = x * 10 + 7
      if ch == '8': x = x * 10 + 8
      if ch == '9': x = x * 10 + 9
   return x
于 2012-04-17T23:58:04.713 に答える
0

検討できるアプローチの 1 つを次に示します。

x = "1"
print type(x)
<type 'str'>
import string
if x in string.digits:
    # Now you know that x is a number
    print x

string.ascii_lettersでも同じことができます。完全な答えではありませんが、正しい方向に向ける必要があります。

于 2012-04-18T00:02:42.407 に答える