Форум сайта python.su
0
Хочу сделать программу, которая переводила бы двоичные числа в десятичные.
y='101010'
i=0
j=0
l=len(y)-1
dl=len(y)
while j<dl:
s=''
s=str(int(y[i])*(pow(2,l)))
i=i+1
j=j+1
l=l-1
print s,
print "| ® |
Отредактировано (Сен. 30, 2010 20:09:59)
Офлайн
13
1. Самое простое - завести переменную и наращивать сумму в ней.
2. import ?
3. set(sorted(ваша строка)) !=
Теперь мои предложения:
На мой взгляд в вашем коде много лишних переменных. Попробуйте от них избавиться.
Для начала попробуйте цикл while можно заменить на for i in xrange(len(y))
И еще - переводить s в строку не нужно.
Офлайн
18
while 1:
y = raw_input('vvedite bin (0 or 1):')
if not y: break
if y.count('1') + y.count('0') != len(y) :
print 'tolko 0 and 1'
continue
dec = 0
for x in range(0,len(y)):
dec += 2**x if y[len(y)-x-1] == '1' else 0
print y, ' -> ',dec
Офлайн
7
while True:
y = raw_input('Enter binary number (0 or 1):')
if not y: break
if set(y)-{'0','1'}: continue
dec = sum( 2**i for i, c in enumerate(reversed(y)) if c =='1' )
print( y, '->', dec )
print( 'Check: ', y, '->', int( y, 2 ) )
Отредактировано (Окт. 1, 2010 09:52:34)
Офлайн
0
Спасибо всем за ответы, помогли. Вот пытаюсь ограничить длину вводимого числа:
if x.count('1')+x.count('0')!=len(x) or len(x)>(2**32)::
print 'Вы ввели некорректное число.'if x.count('1')+x.count('0')!=len(x):
print 'Вы ввели некорректное число.'Отредактировано (Окт. 1, 2010 11:38:33)
Офлайн
0
ПС. Все работает, сам изначально неправильное условие написал )
Офлайн