Python OOP示例?

Python OOP示例?,python,list,if-statement,Python,List,If Statement,这个问题主要是因为我找不到任何关于如何保持主实例等的好Python示例,我正在努力避免养成任何坏习惯,就像我开始使用PHP时那样。我大约3个小时前开始使用Python,一直在使用它,主要是在控制台上,然后我决定在观看时尝试使用这些列表。这主要是因为代码看起来非常糟糕,而且可能是错误的。有没有什么地方可以让我找到一些简单的应用程序,它们是按照Python的设计来编写的 背景:我想考虑一个小应用程序,让我看看是否可以循环使用阵列。所以我做了一份杂货清单 i = 0 v = [] vara = Non

这个问题主要是因为我找不到任何关于如何保持主实例等的好Python示例,我正在努力避免养成任何坏习惯,就像我开始使用PHP时那样。我大约3个小时前开始使用Python,一直在使用它,主要是在控制台上,然后我决定在观看时尝试使用这些列表。这主要是因为代码看起来非常糟糕,而且可能是错误的。有没有什么地方可以让我找到一些简单的应用程序,它们是按照Python的设计来编写的

背景:我想考虑一个小应用程序,让我看看是否可以循环使用阵列。所以我做了一份杂货清单

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()

对我来说,更重要的是有地方找到一些好的例子,这是最重要的。如果可以,我还将如何创建实例以开始和结束。如果可以的话,非常感谢。

要编写更好的python代码,最好的方法是1)编写大量python代码2)通过询问“如何以更具python风格的方式编写此代码?”来评论您自己的python代码(要理解python风格,请阅读和)3)阅读标准库,关于列表理解、itertools和巧妙技巧,所以你把它们放在脑后。Python非常注重将所有常见操作变成一行程序/单个函数

以下是我对您的代码的看法:

i = 0
具有错误名称的全局变量初始化。变量应具有描述性名称或是临时迭代变量(在这种情况下,i、j、k等都可以)

具有错误名称的全局变量初始化。什么是“v”?如果从现在起3个月后阅读代码,您可能还不知道这是为了什么。此外,变量应尽可能在类或函数内部初始化(用于OOP封装)

具有错误名称的全局变量初始化。什么是“瓦拉”?如果不需要全局状态,则不应在全局级别上定义它。您应该使用管件名称定义变量的使用位置和时间

def view():
    indx = 1
    for i in v:
        print "Grocery #" + str(indx) + ": " + str(i)
        indx += 1
使用
enumerate()
返回索引和项的元组,而不是使用两个单独的迭代变量

好多了!它(可选)在这一点上甚至不需要自己的方法,因为它是一个两行程序

while vara != "end" and vara != "exit":
如果name==“main”,则应包装在函数中并调用。如

啊,这就是瓦拉的目的。你应该称它为更具描述性的东西——命令、动作、用户命令等等。瓦拉对我来说毫无意义

    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]
我想不出一个具体的方法来重写它,但它“闻起来”很黑。(可能是因为您通过使用子字符串和indexofs之类的东西来进行所有的命令解析,而不是使用适当的结构化方式。但是,每个人都是这样开始的:))


你问的问题不是很清楚。从我收集的信息来看,听起来您正在寻找一种资源来开始学习一些Python语法,或许还可以从中获得更多的想法。通常,人们会对他们发布的代码和错误的地方提出特别的问题。您可能希望从上面的代码示例中提出一个您不理解的问题,以使您的问题更具体。一个看起来很有希望的资源:,我认为设计理论比语言更重要,你可以阅读Python中的一些理论和实践,这些概念,你也可以阅读Martin Fowler的《信息系统体系结构》一书,我是一本好书,我又读了一遍……你可能还喜欢随机观看YouTube视频,这通常不是学习Python的最佳方式,特别是如果你想(如你所说)避免养成坏习惯并学习它的本意的话。我强烈地建议,如果你还没有这样做,那么就去做。这很完美,非常感谢@John Y。非常感谢。非常感谢。很多时候,我会在完成另一次阅读并格式化代码后看到发生了什么。谢谢你花时间向我解释这件事。非常感谢。@Justin我想我现在已经编辑完这篇文章了。祝你好运,玩得开心:)谢谢你,你有什么地方可以举一些例子吗?特别是关于hacky部分的部分,我能找到一些构造该部分的示例吗?@Justin嗯,您可以使用lexer/解析器(如PLY)在Python中定义形式语法。不过,对于小型应用程序来说,这可能有点过头了。对于一些简单但清晰的内容,您希望每个命令都以相同的方式运行—一个单词命令(可能由它前面或后面的某个特殊字符表示),其余部分作为该命令的输入。您需要打开命令并为该命令调用一个方法(例如,使用命令名字典对其函数)来传递输入。差不多吧,非常感谢。我希望Python能像它的神秘神话一样简单:D。
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()