2013-11-13 3 views
0

Я очень новичок в программировании, и я только начинаю с python. Я нашел несколько упражнений, чтобы немного попрактиковаться, и я застрял в то время как и для циклов.Пока цикл или цикл? (python)

Я хочу разработать программу, которая просит пожертвования, и продолжает просить об этом пожертвовании до тех пор, пока не будет пожертвована минимальная сумма в размере 50 евро. Когда этот минимум или больше достигнут, я хочу остановить программу и поблагодарить людей за пожертвование.

Мой код выглядит следующим образом:

donation = raw_input("enter your donation: ") 

while donation < 50: 
     donation= raw_input("We are sorry that's not enough, enter again: ") 
     if donation >= 50 print "thank you for the donation" 

, но это не работает вообще, я чувствую, что я что-то отсутствует полностью здесь.

Кто мог бы помочь мне написать рабочий код?

ответ

3

Реальная проблема с вашим кодом не имеет ничего общего с петлей. Как отметил Дэвид, вы можете написать это лучше, но то, что у вас есть работает, это просто немного подробный.

Проблема в том, что вы сравниваете строки с числами. raw_input всегда возвращает строку. И ни одна строка не меньше любого числа. Таким образом, donation < 50 никогда не будет правдой.

Что вам нужно, чтобы превратить его в int (или float или Decimal или какой-то другой номер, независимо от уместно):

donation = int(raw_input("enter your donation: ")) 

while donation < 50: 
    donation = int(raw_input("We are sorry that's not enough, enter again: ")) 
    if donation >= 50: print "thank you for the donation" 
3

Состояние if в петле while не должно быть необходимости вообще. Цикл будет продолжаться до тех пор, donation >= 50 так что вы просто должны быть в состоянии напечатать сообщение после цикла:

donation = raw_input("enter your donation: ") 

while donation < 50: 
     donation= raw_input("We are sorry that's not enough, enter again: ") 

print "thank you for the donation" 
+2

Для расширения на этом: для используются петли, когда вы знаете, сколько раз, когда вы собираетесь проходить через цикл. Хотя циклы должны выполняться до тех пор, пока не будет выполнено какое-либо условие (что может произойти сейчас или через 50 лет ..) – statue

+0

@statue: Действительно. Циклы 'while' создают большие потенциально-бесконечные циклы, такие как« игровой цикл », где цикл обработки продолжается до тех пор, пока, например, некоторая связь с пользовательским интерфейсом не завершит игру. – David

+1

Это хорошее предложение, но на самом деле его код не работает, или объясните, почему он не работает или что ему не хватает. Это скорее комментарий, чем ответ. (Но очень хороший комментарий, если да.) – abarnert