Найти - Пользователи
Полная версия: Не могу понять как разработать функцию count_holes(n)
Начало » Центр помощи » Не могу понять как разработать функцию count_holes(n)
1 2 3
py.user.next
Xryst
Ну и вот, самый главный вопрос, как не в щитывать этот “L” ?
Там нужно добавить long:
    if not isinstance(num, int):
    if not isinstance(num, (int, long)):

>>> def nholes(num):
...     if not isinstance(num, (int, long)):
...         if not isinstance(num, str):
...             return 'ERROR'
...         else:
...             if num and num[0] == '-':
...                 num = num[1:]
...             if not num.isdigit():
...                 return 'ERROR'
...     num = abs(int(num))
...     t = (1, 0, 0, 0, 1, 0, 1, 0, 2, 1)
...     sm = int(num == 0)
...     while num > 0:
...         sm += t[num % 10]
...         num = int(num / 10)
...     return sm
... 
>>> nholes(99L)
2
>>>

Неизвестно, может ли L находиться в строке.
psycoz
TroSer
А где это вы такие задания сдаете?
прометеус
Isem
def func(arg):
    try: return sum('046889'.count(k) for k in str(int(arg)))
    except: return "ERROR"
py.user.next
Isem
def func(arg):

[guest@localhost py]$ python -mdoctest nholes.doct 
**********************************************************************
File "nholes.doct", line 78, in nholes.doct
Failed example:
f(1.5)
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 80, in nholes.doct
Failed example:
f(1.0)
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 82, in nholes.doct
Failed example:
f(-1.5)
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 84, in nholes.doct
Failed example:
f(-1.0)
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 117, in nholes.doct
Failed example:
f('1\n')
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 119, in nholes.doct
Failed example:
f('\n1')
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 121, in nholes.doct
Failed example:
f('1 ')
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 123, in nholes.doct
Failed example:
f(' 1')
Expected:
'ERROR'
Got:
0
**********************************************************************
1 items had failures:
8 of 58 in nholes.doct
***Test Failed*** 8 failures.
[guest@localhost py]$
Isem
py.user.next
f('\n1')
Если это ERROR, то PHP - это само совершенство.

>>> nholes('+8')
'ERROR'
Должно быть 2

def func(arg):
    try: return sum('046889'.count(k) for k in str(int(str(arg))))
    except: return "ERROR"

Для особо требовательных:
def func(arg):
    try: 
        int(arg)
        return sum('046889'.count(k) for k in str(arg) if 1//(k in '-+0123456789'))
    except: return "ERROR"
py.user.next
Обновил свой вариант.
def nholes(num):
    if not isinstance(num, (int, long)):
        if not isinstance(num, str):
            return 'ERROR'
        else:
            if num[:1] in '-+':
                num = num[1:]
            if not num.isdigit():
                return 'ERROR'
    num = abs(int(num))
    t = (1, 0, 0, 0, 1, 0, 1, 0, 2, 1)
    sm = int(num == 0)
    while num > 0:
        sm += t[num % 10]
        num = int(num / 10)
    return sm

Специфицировал тесты немного.
>>> from nholes import nholes as f
>>>
>>> f(0)
1
>>> isinstance(f(0), bool)
False
>>> f(1)
0
>>> isinstance(f(1), bool)
False
>>> f(2)
0
>>> f(3)
0
>>> f(4)
1
>>> f(5)
0
>>> f(6)
1
>>> f(7)
0
>>> f(8)
2
>>> f(9)
1
>>>
>>> f(123)
0
>>> f(345)
1
>>> f(678)
3
>>> f(40689)
6
>>> f(12357)
0
>>> f(1000)
3
>>> f(1888)
6
>>> f(1448866992)
10
>>>
>>> f(-1)
0
>>> f(-4)
1
>>> f(-2)
0
>>> f(-8)
2
>>> f(+1)
0
>>> f(+4)
1
>>> f(+2)
0
>>> f(+8)
2
>>>
>>> f(1L)
0
>>> f(8L)
2
>>> f(-1L)
0
>>> f(-8L)
2
>>>
>>> f('123')
0
>>> f('468')
4
>>> f('-123')
0
>>> f('-468')
4
>>> f('+123')
0
>>> f('+468')
4
>>> f('0')
1
>>> f('00')
1
>>> f('000')
1
>>>
>>> f(1.5)
'ERROR'
>>> f(1.0)
'ERROR'
>>> f(-1.5)
'ERROR'
>>> f(-1.0)
'ERROR'
>>>
>>> f('1.5')
'ERROR'
>>> f('1.0')
'ERROR'
>>> f('1.8')
'ERROR'
>>> f('-1.5')
'ERROR'
>>> f('-1.0')
'ERROR'
>>> f('-1.8')
'ERROR'
>>> f('+1.5')
'ERROR'
>>> f('+1.0')
'ERROR'
>>> f('+1.8')
'ERROR'
>>>
>>> f('')
'ERROR'
>>> f('a')
'ERROR'
>>> f('ab')
'ERROR'
>>> f('0a')
'ERROR'
>>> f('a0')
'ERROR'
>>> f('aa0')
'ERROR'
>>> f('0aa')
'ERROR'
>>> f('a0a')
'ERROR'
>>> f('00a')
'ERROR'
>>> f('a00')
'ERROR'
>>>
>>> f('1\n')
'ERROR'
>>> f('\n1')
'ERROR'
>>> f('1 ')
'ERROR'
>>> f(' 1')
'ERROR'
>>>
>>> f('1-')
'ERROR'
>>> f('8-')
'ERROR'
>>> f('1+')
'ERROR'
>>> f('8+')
'ERROR'
>>>


Isem
Если это ERROR, то PHP - это само совершенство.
Это ERROR, так как в условии не сказано, что разрешены пробельные символы в строке.
Isem
def func(arg):
[guest@localhost py]$ python -mdoctest nholes.doct 
**********************************************************************
File "nholes.doct", line 139, in nholes.doct
Failed example:
f('1\n')
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 141, in nholes.doct
Failed example:
f('\n1')
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 143, in nholes.doct
Failed example:
f('1 ')
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 145, in nholes.doct
Failed example:
f(' 1')
Expected:
'ERROR'
Got:
0
**********************************************************************
1 items had failures:
4 of 73 in nholes.doct
***Test Failed*** 4 failures.
[guest@localhost py]$

Isem
Для особо требовательных:
[guest@localhost py]$ python -mdoctest nholes.doct 
**********************************************************************
File "nholes.doct", line 85, in nholes.doct
Failed example:
f('00')
Expected:
1
Got:
2
**********************************************************************
File "nholes.doct", line 87, in nholes.doct
Failed example:
f('000')
Expected:
1
Got:
3
**********************************************************************
1 items had failures:
2 of 73 in nholes.doct
***Test Failed*** 2 failures.
[guest@localhost py]$
terabayt
num //= 10
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB