Форум сайта python.su
0
Доброго времени суток.
Несколько дней назад зарегистрировался на сайте codecademy и начал изучать питон (дошел пока что только до изучения циклов while и for)
Написал эту простую игру на угадывание чисел. (ранее не программировал, не пинайте строго, пожалуйста)
from random import randint def gameMain(): print "Попытайтесь угадать число!" n = randint(1,101) i = 1 #print n while i <= 10: print "Попытка: " + str(i) i += 1 guess_n = input("Ваше число: ") if guess_n == n: print "Вы УГАДАЛИ! :-)" print "Загаданное число - " + str(n) + ". Заново? (y/n)" ch = raw_input() if ch == "n": print "Спасибо за игру!" break else: gameMain() else: if guess_n > n: print "Загаданное число меньше вашего!" else: print "Загаданное число больше вашего!" else: print "Вы проиграли! Загаданное число было - " + str(n) + ". Заново? (y/n)" ch = raw_input() if ch == "n": print "Спасибо за игру!" else: gameMain() gameMain()
Отредактировано web0worm (Март 20, 2013 16:27:07)
Офлайн
568
try: guess_n = input("Ваше число: ") except: print "I want integer" continue
Офлайн
0
Привыкай писать
if __name__ == u'__main__':
gameMain()
Офлайн
0
FishHook
Спасибо!
Adastraz
Не совсем понял, мы такого не учили, можно, пожалуйста, поподробнее, или где почитать про это?
Нашел еще баг. в любой момент можно ввести “n” и выйграть. Ну это, думаю, догадаюсь, как исправить.
Отредактировано web0worm (Март 20, 2013 18:14:24)
Офлайн
88
Процедуры там в следующем занятии после while и for. Лучше освоить и их, прежде чем использовать. А лучше пройти курс полностью.
Офлайн
1
Принципиально использовать while/else?
На мой взгляд с for/else можно избежать ненужной переменной i.
Пример:
for _ in xrange(10): game_code else: fail_message
web0wormВообще если прям так и загуглить (“if __name__ == ‘__main__’:”) выдаст много ссылок с ответом что это и с чем едят (в частности тут). А вообще вот ссылка на оф. док. http://docs.python.org/2/library/__main__.html. Пользуйся этим сайтом как можно чаще. Там есть практически все ответы на вопросы что и как.
Adastraz
Не совсем понял, мы такого не учили, можно, пожалуйста, поподробнее, или где почитать про это?
Отредактировано prokoptsev (Март 21, 2013 08:51:39)
Офлайн
568
prokoptsevНедавно обсуждалось, в скорости работы скрипта конкатенация не проигрывает на актуальных версиях питона.
А еще не знаю, проходили вы это или нет, но использование конкатенации не самый лучий способ
Офлайн
1
FishHookА можете ссылку дать?
Недавно обсуждалось, в скорости работы скрипта конкатенация не проигрывает на актуальных версиях питона.
Офлайн
88
По поводу цикла for/while. Некоторые IDE ругаются на неиспользованную переменную. Можно вот так:
def count(n): while True: yield n > 0 n -= 1 c = count(10) while c.next(): pass
Отредактировано Shaman (Март 21, 2013 14:12:00)
Офлайн