2015-12-16 5 views
2

Это модуль в части более крупного «торгового автомата», над которым я работаю. Однако я столкнулся с некоторыми проблемами. Если они не платят достаточно (1,75 доллара США), их просят ввести дополнительную сумму. Часть моей проблемы заключается в том, что я не знаю, какие операции я должен сделать, чтобы изменить дефицит внутри цикла. Все, что я пробовал, привело к ошибкам, например, «ввод ожидал не более 1 аргумента, получил 3» и т. Д.Python: Выполнение пользовательского добавления к переменной в цикле

selection = 5 
loopCount = 0 
deposit = 0 
cost = 1.75 
print("It costs $",cost,".") 
deposit = float(input("Enter your money amount (e.g. 1.5 for $1.50, .50 for $0.50, etc.):\n--\n")) 
deficit = cost - deposit 
change = deposit - cost 
if deposit < cost: 
    while deficit > 0 and loopCount < 1: 
     ??? = float(input("Please enter an additional $",deficit,".")) 
     loopCount += 1 
if deposit >= cost: 
    print("Thank you for purchasing item#",selection,". Your change is $",change,".") 
+0

Из-за того, что я вижу, отступы могут быть проблемой здесь. Отступьте цикл while к выражению if над ним. Другое утверждение if, похоже, имеет свой отпечаток также при некорректном отступе. –

+0

Спасибо за ответ! Это была просто ошибка форматирования, когда я частично копировал ее на сайт. Цикл работает точно. Я просто не знаю, какую операцию я должен использовать, чтобы сделать дефицит равной стоимости. – Copache

+0

внутри вставки цикла 'deficit - = ???' где '???' является некоторой переменной. В основном это 'deficit = deficit - ???' –

ответ

1

Это работает для меня. Не забудьте увеличить loopCount, так как прямо сейчас он не будет зацикливаться более одного раза.

selection = 5 
loopCount = 0 
deposit = 0 
cost = 1.75 
print("It costs $",cost,".") 
deposit = float(input("Enter your money amount (e.g. 1.5 for $1.50, .50 for $0.50, etc.):\n--\n")) 
deficit = cost - deposit 
change = deposit - cost 
if deposit < cost: 
    while deficit > 0 and loopCount < 1: 
     deficit -= float(input("Please enter an additional ${}.".format(deficit))) 
     loopCount += 1 
if deposit >= cost: 
    print("Thank you for purchasing item#",selection,". Your change is $",change,".") 
+0

Я не совсем понимаю, как работает «str (дефицит) +». Какое точное название (или идея) для такого рода функций? Я хочу узнать больше о том, что он делает. – Copache

+0

@AustinHowe в этом случае для конкатенации этих строк требуется строка [type cast] (http://www.informit.com/articles/article.aspx?p=459269&seqNum=7) _deficit_ в строку, которая [ 'str()'] (https://docs.python.org/2/library/functions.html#str). _В задним числом, я должен отформатировать строку, а не конкатенировать их. Ну что ж._ –

0

Предполагая, что вы не хотите, чтобы вырваться из цикла, пока они не платят достаточно денег, вы можете сделать это:

while abs(deficit) < cost: 
    added = float(input("Please enter an additional $",deficit,".")) 
    deficit = cost - deposit - added 

абс функция будет выводить абсолютное значение, так что вы можете сравнить его непосредственно Стоимость.

Признаки, которые следует учитывать, могут потребовать проверки ошибок на ваших входах. Кроме того, если вы хотите, чтобы у вас был механизм для выхода из цикла, вы могли бы добавить логическое значение true или false (вместо числа циклов), которое привязано к некоторому другому входу типа «Вы хотите вставить больше денег? y или n "