Возникли проблемы с запуском этого цикла - PullRequest
0 голосов
/ 25 мая 2018

Я студент первого курса по программированию, и у меня возникают проблемы с попыткой заставить мой код правильно зацикливаться, и я хотел бы получить некоторые подсказки о том, как заставить его работать так, как нужно.Я запускаю программу, которая рассчитывает изменение с заранее установленным запасом 10 каждой монеты, цена и оплата будут введены пользователем, а изменение будет возвращено по количеству монет, оставшихся в запасе.Сейчас я испытываю трудности, пытаясь заставить программу вернуть «недостаточные средства» и «без изменений» печатные заявления, и пытаюсь заставить ее зацикливаться от кварталов к центам на никель и копейки, я не уверен, что яможет быть не так.

quarters = 10
dimes = 10
nickels = 10
pennies = 10
stock = quarters, dimes, nickels, pennies
print("\nWelcome to change-making program.")

print("\nStock: {} quarters, {} dimes, {} nickels, and {} pennies".format(
            quarters, dimes, nickels, pennies))
in_str = float(input("Enter the purchase price (xx.xx) or 'q' to quit: "))
payment_int = int(input("Input dollars paid (int):"))
change_sum = float(payment_int) - in_str
#in_str = float(input("Enter the purchase price (xx.xx) or 'q' to quit: "))
while change_sum >= 0:

            if payment_int < in_str:
                print("Insufficient funds")
                break
            elif payment_int == in_str:
                print("No Change")
                break
            else:
                if quarters > 0 and change_sum >= 0.25:

                    change_sum = change_sum - 0.25
                    quarters -= 1

                    print(quarters, change_sum)



                elif dimes > 0 and 0.25 > change_sum >= 0.10:

                    change_sum = change_sum - 0.1
                    dimes -= 1
                    print(dimes, change_sum)
                elif nickels > 0 and 0.1 > change_sum >= 0.05:
                    change_sum = change_sum - 0.05
                    nickels -= 1
                    print(nickels, change_sum)
                elif pennies > 0 and 0.05 > change_sum >= 0.01:
                    change_sum = change_sum -0.01
                    pennies -=1
                    print(pennies, change_sum)
                else:
                    if change_sum == 0.0:

                        break


print("\nStock: {} quarters, {} dimes, {} nickels, and {} pennies".format(
            quarters, dimes, nickels, pennies))
print(change_sum)

1 Ответ

0 голосов
/ 25 мая 2018

Если фонда недостаточно, то change_sum равно <0 и цикл while никогда не запускается.Вот почему вы не получаете сообщение «недостаточно средств».Сначала вы должны проверить достаточность, а затем запустить цикл:

Просто измените эту часть:

while change_sum >= 0:
    if payment_int < in_str:
        print("Insufficient funds")
        break
    elif payment_int == in_str:
        print("No Change")
        break
    else:
        if quarters > 0 and change_sum >= 0.25:

на эту:

if payment_int < in_str:
    print("Insufficient funds")
    break
elif payment_int == in_str:
    print("No Change")
    break

while change_sum >= 0:
    if quarters > 0 and change_sum >= 0.25:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...