2013-05-01 3 views
-1

Этот вопрос в основном из-за того, что я не могу найти хорошие примеры Python о том, как сохранить основной экземпляр и т. Д., И я стараюсь не превращаться в вредные привычки, как это было при запуске PHP. Я начал Python около 3 часов назад, идя на него, в основном консоль, затем я решил попробовать списки, когда смотрел https://www.youtube.com/watch?v=2IEePwMAb5Y&list=PL0A9588F9B2C45B3A. В основном это убивает, что код выглядит ужасно ужасным и, по-видимому, неправильным. Есть ли какие-нибудь места, где я могу найти простые приложения, написанные как Python, предназначенные для поиска и запуска?Примеры Python OOP?

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

i = 0 
v = [] 
vara = None 
def view(): 
    indx = 1 
    for i in v: 
     print "Grocery #" + str(indx) + ": " + str(i) 
     indx += 1 
while vara != "end" and vara != "exit": 
    vara = raw_input("Please enter a grocery: ") 
    vara = str(vara) 
    if vara == "view": 
     view() 
    elif vara[len(vara)-4: len(vara)] == " del": 
     key = vara[0:len(vara) - 4] 
     if key in v: 
      v.remove(key) 
      print "Deleted: " + key 
     else: 
      print "Error, " + key + " was not found in your list" 
    elif (vara != "end" and vara != "exit") and len(vara) > 0: 
     v.append(vara) 
view() 

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

+0

Это не очень понятно о чем вы спрашиваете. Из того, что я собираю, похоже, что вы ищете ресурс, чтобы начать изучать синтаксис Python и, возможно, еще несколько идей от него. Обычно у людей возникает вопрос о коде, который они публикуют, и о том, что с ним не так. Вы можете придумать вопрос, который вы не понимаете из приведенного выше примера кода, чтобы сделать ваш вопрос более конкретным. Один ресурс, который выглядит многообещающим: http://learnpythonthehardway.org/book/. –

+0

http://www.d.umn.edu/~gshute/softeng/principles.html, http://en.wikipedia.org/wiki/Software_design, я думаю, что теория дизайна важнее, чем язык, вы может прочитать некоторые теории и практики в Python, а также вы можете прочитать книгу «Архитектура информационных систем» Мартина Фаулера, я славная книга, я читаю ее снова ... – DGomez

+0

Вам также может понравиться http: //codereview.stackexchange. com – kojiro

ответ

2

Чтобы написать лучший код python, лучший способ: 1) написать много кода на Python 2) критиковать собственный код на Python, спросив: «Как это можно записать более питоническим способом?» (Чтобы понять pythonic, читайте http://blog.startifact.com/posts/older/what-is-pythonic.html и http://www.python.org/dev/peps/pep-0020/). 3) Прочитайте стандартные библиотеки, сведения о списках и itertools и аккуратные трюки, чтобы вы держали их в задней части головы. Python много говорит о том, чтобы сделать все общие операции одной линейкой/одиночной функцией.

Вот мои мысли о вашем коде:

i = 0 

Глобальных переменные инициализации с плохим именем. Переменные должны либо иметь описательное имя или быть переменной временной итерацией (в этом случае я, J, K, и т.д., все в порядке)

v = [] 

Глобальные переменные инициализации с плохим именем. Что такое «v»? Если вы прочтете свой код через 3 месяца, вы бы понятия не имели, что это такое. Кроме того, переменные должны быть инициализированы внутри класса или функции по возможности (для инкапсуляции ООП).

vara = None 

Инициализация глобальной переменной с плохим именем. Что такое «вара»? Если вам не нужно иметь глобальное состояние, вы не должны определять его на глобальном уровне. Вы должны определить переменные где и когда они будут использоваться, с именами подгонки.

def view(): 
    indx = 1 
    for i in v: 
     print "Grocery #" + str(indx) + ": " + str(i) 
     indx += 1 

Вместо два отдельных переменной итерации, используйте enumerate() для возврата кортежей индекса и пункта. http://docs.python.org/2/library/functions.html#enumerate

Как и в

def view(): 
    for i, item in v.iteritems(): 
     print "Grocery #" + str(i) + ": " + str(item) 

Гораздо приятнее! На этом этапе (необязательно) даже не нужен собственный метод, так как это два лайнера.

while vara != "end" and vara != "exit": 

должен быть завернут в функции и вызывается, если имени == «главного». Как и в случае What does if __name__ == "__main__": do?

Ах, вот для чего вара. Вы должны называть его более описательным - команда, действие, usercommand, что угодно. Вара для меня бессмысленна.

vara = raw_input("Please enter a grocery: ") 
    vara = str(vara) 

Я уверен, что эта линия не нужна - не raw_input только быть в состоянии вернуть строку, так или иначе?

if vara == "view": 
     view() 
    elif vara[len(vara)-4: len(vara)] == " del": 
     key = vara[0:len(vara) - 4] 

Я не могу думать определенным образом переписать, но это «пахнет» Hacky. (Может быть, это тот факт, что вы делаете все ваши команды синтаксическим, делая подстроки и indexofs и прочее, а не с помощью правильного структурированного. Но, все начинается, как эти :))

 if key in v: 
      v.remove(key) 
      print "Deleted: " + key 
     else: 
      print "Error, " + key + " was not found in your list" 
    elif (vara != "end" and vara != "exit") and len(vara) > 0: 
     v.append(vara) 
view() 
+0

Большое спасибо. Очень я посмотрю, что произойдет, когда я закончу другой, и отформатирую свой код. Спасибо, что нашли время, чтобы объяснить это мне. Большое спасибо. – Justin

+0

@ Justin Я думаю, что я закончил редактирование сообщения сейчас. Удачи и получайте удовольствие :) – Patashu

+0

Спасибо, есть ли у вас места для примера? В частности, часть хакерской части, есть ли место, где я могу найти несколько примеров структурирования этой части? – Justin

Смежные вопросы