Xryst
Вот что у меня получилось:
[guest@localhost nholes]$ python3 -mdoctest nholes.doct
**********************************************************************
File "nholes.doct", line 108, in nholes.doct
Failed example:
f('1\n')
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 110, in nholes.doct
Failed example:
f('\n1')
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 112, in nholes.doct
Failed example:
f('1 ')
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 114, in nholes.doct
Failed example:
f(' 1')
Expected:
'ERROR'
Got:
0
**********************************************************************
1 items had failures:
4 of 54 in nholes.doct
***Test Failed*** 4 failures.
[guest@localhost nholes]$
JOHN_16
Так как количество вариантов цифр достаточно ограничено можно просто перебирать известные варианты:
[guest@localhost nholes]$ python3 -mdoctest nholes.doct
**********************************************************************
File "nholes.doct", line 69, in nholes.doct
Failed example:
f(1.5)
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 71, in nholes.doct
Failed example:
f(1.0)
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 73, in nholes.doct
Failed example:
f(-1.5)
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 75, in nholes.doct
Failed example:
f(-1.0)
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 108, in nholes.doct
Failed example:
f('1\n')
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 110, in nholes.doct
Failed example:
f('\n1')
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 112, in nholes.doct
Failed example:
f('1 ')
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 114, in nholes.doct
Failed example:
f(' 1')
Expected:
'ERROR'
Got:
0
**********************************************************************
1 items had failures:
8 of 54 in nholes.doct
***Test Failed*** 8 failures.
[guest@localhost nholes]$
terabayt
Xryst
А как испаравить ошибки, выше
[guest@localhost nholes]$ python3 -mdoctest nholes.doct
**********************************************************************
File "nholes.doct", line 69, in nholes.doct
Failed example:
f(1.5)
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 71, in nholes.doct
Failed example:
f(1.0)
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 73, in nholes.doct
Failed example:
f(-1.5)
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 75, in nholes.doct
Failed example:
f(-1.0)
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 108, in nholes.doct
Failed example:
f('1\n')
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 110, in nholes.doct
Failed example:
f('\n1')
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 112, in nholes.doct
Failed example:
f('1 ')
Expected:
'ERROR'
Got:
0
**********************************************************************
File "nholes.doct", line 114, in nholes.doct
Failed example:
f(' 1')
Expected:
'ERROR'
Got:
0
**********************************************************************
1 items had failures:
8 of 54 in nholes.doct
***Test Failed*** 8 failures.
[guest@localhost nholes]$
Свой вариант:
def nholes(num):
if not isinstance(num, int):
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.doct:
>>> 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(1L)
0
>>> f(8L)
2
>>> f(-1L)
0
>>> f(-8L)
2
>>>
>>> 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.5')
'ERROR'
>>> f('-1.0')
'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'
>>>
Add
Добавил значения с L в тесты.