Форум сайта python.su
857
XrystТам нужно добавить long:
Ну и вот, самый главный вопрос, как не в щитывать этот “L” ?
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 >>>
Отредактировано py.user.next (Март 2, 2015 23:40:04)
Офлайн
0
TroSerпрометеус
А где это вы такие задания сдаете?
Офлайн
7
def func(arg): try: return sum('046889'.count(k) for k in str(int(arg))) except: return "ERROR"
Офлайн
857
Isemdef 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]$
Офлайн
7
py.user.nextЕсли это ERROR, то PHP - это само совершенство.
f('\n1')
>>> nholes('+8') 'ERROR'
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"
Отредактировано Isem (Март 14, 2015 02:54:21)
Офлайн
857
Обновил свой вариант.
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, так как в условии не сказано, что разрешены пробельные символы в строке.
Если это ERROR, то PHP - это само совершенство.
Isemdef 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]$
Отредактировано py.user.next (Март 15, 2015 00:34:49)
Офлайн
103
num //= 10
Офлайн