Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 16, 2012 23:24:00

ilja
От:
Зарегистрирован: 2009-12-16
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Объясните кто может...

Ввожу число напр. 116076 в восьм. сист.
сдвигаю на 2 разряда в лево ( num << 2) На бумаге получается 470370 А в Pythone - 05164150 Почему?

    num = oct(116076)
    num = int(num)
    num = num << 2
    print oct(num)



Офлайн

#2 Дек. 17, 2012 00:35:16

GaiveR
От:
Зарегистрирован: 2011-08-13
Сообщения: 122
Репутация: +  16  -
Профиль   Отправить e-mail  

Объясните кто может...

Неправильно вводите восьмеричное число.

In [1]: num = int('116076', 8)
In [2]: num = num << 2
In [3]: print oct(num)
0470370



Офлайн

#3 Дек. 17, 2012 01:51:36

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Объясните кто может...

Python понимает введенные числа следующим образом: десятичная система (просто число) - 123, двоичная форма (приставка 0b) - 0b1111011, восьмеричная система (приставка 0) - 0173, в шестандцатеричной системе (приставка 0x) - 0x7b

num = 0116076
num = num << 2
print oct(num)
0470370



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Дек. 17, 2012 06:07:33

ilja
От:
Зарегистрирован: 2009-12-16
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Объясните кто может...

Вот еще вопросик… Мне нужно получить список чисел, но я не могу это сделать, если я ввожу число напр. 000010 Питон не воспринимает нули с лева В итоге питон записывает только 010 Тобишь 8 :mad: А мне нужен список spis = Что делать??



Отредактировано ilja (Дек. 17, 2012 06:49:50)

Офлайн

#5 Дек. 17, 2012 07:41:48

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10019
Репутация: +  857  -
Профиль   Отправить e-mail  

Объясните кто может...

JOHN_16
Python понимает введенные числа следующим образом

восьмеричная система (приставка 0) - 0173
в третьей версии заменили с 0173 на 0o173

>>> num = int('116076', 8)
>>> num <<= 2
>>> oct(num)
'0o470370'
>>>
версия для третьего питона


ilja
если я ввожу число напр. 000010 Питон не воспринимает нули с лева
храни в строках

>>> '000010'
'000010'
>>> int('000010')
10
>>>



Отредактировано py.user.next (Дек. 17, 2012 07:47:45)

Офлайн

#6 Дек. 17, 2012 07:50:09

ilja
От:
Зарегистрирован: 2009-12-16
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Объясните кто может...

Дык мне нужна строка или список как раз

spis = [0,0,0,0,1,0]
Если у меня есть список типа str Как мне сделать этот список типа Int ?

spisToInt = []
spis = [0,0,0,0,1,0]
for element in spis:
	num = spis[i]
	num = int(num,8)
	spisToInt[i].append(num)
	i = i+1

Ошибка out of range



Отредактировано ilja (Дек. 17, 2012 08:15:38)

Офлайн

#7 Дек. 17, 2012 08:40:48

ilja
От:
Зарегистрирован: 2009-12-16
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Объясните кто может...

Заменил For на While и еще кое что Все работает :)



Офлайн

#8 Дек. 17, 2012 23:16:01

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Объясните кто может...

ilja можно короче используя генераторы списков:

spis = [0,0,0,0,1,0]
[int(str(x), 8) for x in spis]



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#9 Дек. 17, 2012 23:18:19

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Объясните кто может...

ilja
Заменил For на While и еще кое что Все работает :)
судя по тому коду вы не понимаете что делаете, полистайте “Чаплыгин - учимся программировать вместе с Python” - времени займет 3-7 дней, зато пользы будет очень много



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#10 Дек. 18, 2012 00:51:17

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Объясните кто может...

ilja
Как мне сделать этот список типа Int ?
так Вы хотите изменить список или новый создать (судя по Вашему коду)?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version