Код с циклом while не работает. Нет вывода.

Naive014

Новичок
Пользователь
Окт 10, 2022
18
0
1
Для полного понимания прикреплю задачу по которой писал код:
Учитель биологии Семён Иванович мечтает на пенсии стать фермером. Для подъёма сельского хозяйства регион выделяет в рамках программы “100 за 100 тысяч” субсидии начинающим фермерам в размере 100 тыс. рублей на покупку ровно 100 голов скота. Приобрести нужно 100 голов скота, а выделяемую сумму необходимо потратить полностью, иначе возникнут вопросы у контролирующих организаций.
Сейчас на рынке цена быка — 10 тыс. рублей, за корову — 5 тыс. рублей а за телёнка — 500 рублей. Выведите в одной строке через пробел количество быков, коров и телят соответственно, которое Семён Иванович может купить в рамках программы. Если решений несколько, выведите любое. Если решений нет, выведите три раза -1.
Вот код:
Python:
cow = 5000
bull = 10000
calf = 500
bank = 100000
bull_1 = 0
cow_1 = 0
calf_1 = 0

while bank >= 500:
    if bull >= bank:
        bull_1 + 1
        bank - bull
        continue
    elif cow >= bank:
        cow_1 + 1
        bank - cow
        continue
    elif calf >= bank:
        bank - calf
        calf_1 + 1
    else:
        print(bull_1, cow_1, calf_1)
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
В чем вопрос состоит? И где у тебя в коде предусмотрено если решений нет вывести три раза -1?
И что это такое?
Python:
bull_1 + 1
bank - bull
и т.д. по скритпу? вычисления производятся, а никуда не сохраняется🤔
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
Для полного понимания прикреплю задачу по которой писал код:

Вот код:
Python:
cow = 5000
bull = 10000
calf = 500
bank = 100000
bull_1 = 0
cow_1 = 0
calf_1 = 0

while bank >= 500:
    if bull >= bank:
        bull_1 + 1
        bank - bull
        continue
    elif cow >= bank:
        cow_1 + 1
        bank - cow
        continue
    elif calf >= bank:
        bank - calf
        calf_1 + 1
    else:
        print(bull_1, cow_1, calf_1)
На! Похвастайся иди перед преподавателем! :ROFLMAO:
Python:
bull = 10000
cow = 5000
calf = 500
bank = 100000
quant_goal = []
cost_goal = []


for x in range(0, 101):
    for y in range(0, 101):
        for z in range(0, 101):
            if x + y + z == 100:
                quant_goal.append(f'{x}+{y}+{z}')

for i in quant_goal:
    x = int(i.split('+')[0])
    y = int(i.split('+')[1])
    z = int(i.split('+')[2])
    if ((bull * x) + (cow * y) + (calf * z)) == bank:
        cost_goal.append(i)


if cost_goal != []:
    for i in cost_goal:
        x = int(i.split('+')[0])
        y = int(i.split('+')[1])
        z = int(i.split('+')[2])
        print(f'На {bank} рублей можно купить: {x} быков, {y} коров и {z} телят.')
else:
    print(f'На {bank} рублей можно купить: -1 быков, -1 коров и -1 телят. Задача не имеет решения')
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
👆 в принципе норм, но можно было не добавлять в quant_goal строку, а сразу список. Таким образом избавимся от сплитов в будущем, у тебя они потом аж 2 раза повторяются🧐:D. И вот это аж прям глаз задергался if cost_goal != []:
Мы типо спрашиваем рутхон, если cost_goal не равен пустому списку (т.е. если он не пустой, то значит в нем что-то есть, а если есть, то сравнение всегда даст True)... Так тоже можно, но зачем, если есть более короткий вариант if cost_goal:
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
👆 в принципе норм, но можно было не добавлять в quant_goal строку, а сразу список. Таким образом избавимся от сплитов в будущем, у тебя они потом аж 2 раза повторяются🧐:D. И вот это аж прям глаз задергался if cost_goal != []:
Мы типо спрашиваем рутхон, если cost_goal не равен пустому списку (т.е. если он не пустой, то значит в нем что-то есть, а если есть, то сравнение всегда даст True)... Так тоже можно, но зачем, если есть более короткий вариант if cost_goal:
Да ладно ты! Не придирайся! :ROFLMAO: Какая разница - ножом я яблоко порезал или так съел? Все равно я его съел! :LOL:
 
  • Ха-ха!
Реакции: 4olshoy_blen

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
но можно было не добавлять в quant_goal строку
А где я добавлял строку? :oops: quant_goal.append(f'{x}+{y}+{z}') - это чтоль? А ты как предлагаешь?
quant_goal.append(x, y, z) - так чтоль?
 
Последнее редактирование:

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
А ты как предлагаешь?
Python:
bull, cow, calf = 10000, 5000, 500
bank = 100000
quant_goal, cost_goal = [], []

for x in range(0, 101):
    for y in range(0, 101):
        for z in range(0, 101):
            if x + y + z == 100:
                quant_goal.append([x, y, z])

for i in quant_goal:
    if bull * i[0] + cow * i[1] + calf * i[2] == bank:
        cost_goal.append(i)

if cost_goal:
    for i in cost_goal:
        print(f'На {bank} рублей можно купить: {i[0]} быков, {i[1]} коров и {i[2]} телят.')
else:
    print(f'На {bank} рублей можно купить: -1 быков, -1 коров и -1 телят. Задача не имеет решения')
 
  • Мне нравится
Реакции: Malenkey

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
Python:
bull, cow, calf = 10000, 5000, 500
bank = 100000
quant_goal, cost_goal = [], []

for x in range(0, 101):
    for y in range(0, 101):
        for z in range(0, 101):
            if x + y + z == 100:
                quant_goal.append([x, y, z])

for i in quant_goal:
    if bull * i[0] + cow * i[1] + calf * i[2] == bank:
        cost_goal.append(i)

if cost_goal:
    for i in cost_goal:
        print(f'На {bank} рублей можно купить: {i[0]} быков, {i[1]} коров и {i[2]} телят.')
else:
    print(f'На {bank} рублей можно купить: -1 быков, -1 коров и -1 телят. Задача не имеет решения')
Ясно. Спасибо. Опять ты ратуешь за компактность кода в ущерб удобочитаемости? :geek:
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
Опять ты ратуешь за компактность кода в ущерб удобочитаемости? :geek:
Да там в принципе что по твоей версии что по моей читается удобно и легко, а вот нажимать лишний раз клавиши капец как лень🥴
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
а вот нажимать лишний раз клавиши капец как лень🥴
А, главное, на скорость выполнения кода оптимизация "Питона", думаю, мало влияет. То ли дело "Ситон"! ) Или я не прав?
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
А, главное, на скорость выполнения кода оптимизация "Питона", думаю, мало влияет. То ли дело "Ситон"! ) Или я не прав?
подобные задачки из "онлайн-универов" вообще мало могут нагрузить питон, просто нужно учиться писать чистый, краткий и в то же время понятный код
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
подобные задачки из "онлайн-универов" вообще мало могут нагрузить питон, просто нужно учиться писать чистый, краткий и в то же время понятный код
Я вот одного не пойму. Почему программы на питоне, скомпилированные в ехе pyinstaller'ом, так долго загружаются? Я написал простейший таймер, который после истечения заданного времени включает мп3 файл. Так он у меня минуту где-то запускается! :eek: Хоть делай так, чтоб он заранее уже включенным был при запуске системы!
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
Я вот одного не пойму. Почему программы на питоне, скомпилированные в ехе pyinstaller'ом, так долго загружаются? Я написал простейший таймер, который после истечения заданного времени включает мп3 файл. Так он у меня минуту где-то запускается! :eek: Хоть делай так, чтоб он заранее уже включенным был при запуске системы!
Да хз, надо код смотреть, я pyinstaller'ом не пользовался, сказать ничё не могу. Форумы там всякие ещё надо глянуть по этим направлениям. Попробуй другой простейший скрипт "скомпилировать", если так же будет, наверное в модуле этом трабла
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
Да хз, надо код смотреть, я pyinstaller'ом не пользовался, сказать ничё не могу. Форумы там всякие ещё надо глянуть по этим направлениям. Попробуй другой простейший скрипт "скомпилировать", если так же будет, наверное в модуле этом трабла
Ясно. Спасибо!
 

Форум IT Специалистов