Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 22, 2013 16:31:28

Denis_Yakovenko
Зарегистрирован: 2013-09-28
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти причину некорректной работы кода

Есть задача:
В некоторой стране используются денежные купюры достоинством в 1, 2, 4, 8, 16, 32 и 64. Дано натуральное число п. Как наименьшим количеством таких денежных купюр можно выплатить сумму п (указать количество каждой из используемых для выплаты купюр)? Предполагается, что имеется достаточно большое количество купюр всех достоинств
Пришёл к такому решению:

def currency ():
    q1, q2, q8, q16, q32, q64 = int, int, int, int, int, int
    n = int(input('Введите N: '))
    while n > 0:
        q64 = n//64
        n = n%64
        q32 = n//32
        n = n%32
        q16 = n//16
        n = n%16
        q8 = n//8
        n = n%8
        q2 = n//2
        n = n%2
        q1 = n
    print('по 64: ', q64)
    print('по 32: ', q32)
    print('по 16: ', q16)
    print('по 8: ', q8)
    print('по 2: ', q2)
    print('по 1: ', q1)

Работает правильно во всех случаях, кроме n = 1. При вводе единицы ничего не возвращает. Также иногда (в 30% случаев) может просто не работать при вводе любого другого числа, то есть просто ничего не возвращать. Подскажите, в чём может быть проблема?

Офлайн

#2 Окт. 22, 2013 16:42:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите найти причину некорректной работы кода

Это что такое?

q1, q2, q8, q16, q32, q64 = int, int, int, int, int, int
print q1



Офлайн

#3 Окт. 22, 2013 16:47:24

nokados
От: Ростов
Зарегистрирован: 2013-10-15
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти причину некорректной работы кода

Denis_Yakovenko
n = n%8
q2 = n//2

четвертаки пропустил



моя подпись

Офлайн

#4 Окт. 22, 2013 16:47:26

Denis_Yakovenko
Зарегистрирован: 2013-09-28
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти причину некорректной работы кода

FishHook
это вроде как объявление переменных. По идее, каждая из них соответствует купюре определённого достоинства. А если Вы про кучу int'ов, то по другому не работает…

Офлайн

#5 Окт. 22, 2013 16:49:39

Denis_Yakovenko
Зарегистрирован: 2013-09-28
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти причину некорректной работы кода

nokados
ну это не столь важно, ведь
но всё же спасибо, так не заметил бы

Офлайн

#6 Окт. 22, 2013 16:51:59

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите найти причину некорректной работы кода

q1= q2=q8=q16=q32=q64=0



Офлайн

#7 Окт. 22, 2013 16:53:33

nokados
От: Ростов
Зарегистрирован: 2013-10-15
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти причину некорректной работы кода

Замени

q1, q2, q8, q16, q32, q64 = int, int, int, int, int, int
на
q1=q2=q4=q8=q16=q32=q64 =0



моя подпись

Офлайн

#8 Окт. 22, 2013 16:55:10

Denis_Yakovenko
Зарегистрирован: 2013-09-28
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти причину некорректной работы кода

FishHook
Я заменил, но всё же код не работает при n = 1

Офлайн

#9 Окт. 22, 2013 16:55:47

nokados
От: Ростов
Зарегистрирован: 2013-10-15
Сообщения: 52
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти причину некорректной работы кода

Denis_Yakovenko
FishHook
Я заменил, но всё же код не работает при n = 1
Онлайн
А что выводит?



моя подпись

Офлайн

#10 Окт. 22, 2013 16:56:36

Euler
Зарегистрирован: 2013-07-30
Сообщения: 43
Репутация: +  1  -
Профиль   Отправить e-mail  

Помогите найти причину некорректной работы кода

print([x//64]+list(bin(x%64)[2:]))

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version