Python 在类中使用while循环

Python 在类中使用while循环,python,class,while-loop,Python,Class,While Loop,我不熟悉类,我需要在类中放置特定的代码。我已经让代码在课堂外按预期工作: minnum = 1 maxnum = 100 num = 1 points = 0 count = 9000 while num in range(minnum, (maxnum + 1)): points += int(num + 300 * 2 * num / 3) num += 1 if count < (poin

我不熟悉类,我需要在类中放置特定的代码。我已经让代码在课堂外按预期工作:

    minnum = 1
    maxnum = 100
    num = 1
    points = 0
    count = 9000
    while num in range(minnum, (maxnum + 1)):
        points += int(num + 300 * 2 * num / 3)
        num += 1
        if count < (points / 4):
            num -= 1
            break
    print num #Prints "19"

我做错了什么?(我希望
print number.num
返回与第一个代码中相同的值,“19”而不是“1”)

在第二个示例中,您没有调用
num()
方法,并且您可能也不希望调用同名(“num”)的变量和方法

(就风格而言,我还建议您通过
\uuuu init\uuuu
初始化器初始化
count
,而不是直接设置
count


在第二个示例中,您没有调用
num()

(就风格而言,我还建议您通过
\uuuu init\uuuu
初始化器初始化
count
,而不是直接设置
count


在第二个示例中,您没有调用
num()

(就风格而言,我还建议您通过
\uuuu init\uuuu
初始化器初始化
count
,而不是直接设置
count


在第二个示例中,您没有调用
num()

(就风格而言,我还建议您通过
\uuuu init\uuuu
初始化器初始化
count
,而不是直接设置
count



您是否真的调用了
number.num()
?这两个代码中还有一些其他的差异,所以不同的行为一点也不奇怪。究竟是什么
self.level
?使用
while
循环来迭代一系列数字并不是很像python。每次循环时创建一个新的
range()
对象也不是很有效。考虑在Num(Mnnum,Max Num + 1)中执行<代码>:。@克里斯普:是的,但这给了我一个错误。(结果是)方法和变量的名称不允许相同。@user3108546:如果您使用的是python 2.7或更低版本,请使用
xrange
而不是
range
。这将解决您的效率问题
range
返回数字列表,而
xrange
返回根据需要生成数字的生成器。如果您使用的是Python3,
range
的行为与
xrange
相同。您是否实际调用了
number.num()
?这两个代码中还有一些其他的差异,因此不同的行为一点也不令人惊讶。究竟是什么
self.level
?使用
while
循环来迭代一系列数字并不是很像python。每次循环时创建一个新的
range()
对象也不是很有效。考虑在Num(Mnnum,Max Num + 1)中执行<代码>:。@克里斯普:是的,但这给了我一个错误。(结果是)方法和变量的名称不允许相同。@user3108546:如果您使用的是python 2.7或更低版本,请使用
xrange
而不是
range
。这将解决您的效率问题
range
返回数字列表,而
xrange
返回根据需要生成数字的生成器。如果您使用的是Python3,
range
的行为与
xrange
相同。您是否实际调用了
number.num()
?这两个代码中还有一些其他的差异,因此不同的行为一点也不令人惊讶。究竟是什么
self.level
?使用
while
循环来迭代一系列数字并不是很像python。每次循环时创建一个新的
range()
对象也不是很有效。考虑在Num(Mnnum,Max Num + 1)中执行<代码>:。@克里斯普:是的,但这给了我一个错误。(结果是)方法和变量的名称不允许相同。@user3108546:如果您使用的是python 2.7或更低版本,请使用
xrange
而不是
range
。这将解决您的效率问题
range
返回数字列表,而
xrange
返回根据需要生成数字的生成器。如果您使用的是Python3,
range
的行为与
xrange
相同。您是否实际调用了
number.num()
?这两个代码中还有一些其他的差异,因此不同的行为一点也不令人惊讶。究竟是什么
self.level
?使用
while
循环来迭代一系列数字并不是很像python。每次循环时创建一个新的
range()
对象也不是很有效。考虑在Num(Mnnum,Max Num + 1)中执行<代码>:。@克里斯普:是的,但这给了我一个错误。(结果是)方法和变量的名称不允许相同。@user3108546:如果您使用的是python 2.7或更低版本,请使用
xrange
而不是
range
。这将解决您的效率问题
range
返回数字列表,而
xrange
返回根据需要生成数字的生成器。如果您使用的是Python3,
range
的行为与
xrange
相同。谢谢,这回答了我的问题。Python不允许我调用与方法相同的变量(因此,如果我调用了方法,如果它有一个同名的变量,我就会出错),count变量是通过一段单独的代码不断变化(或增长)的。例如,每次按下一个特定按钮时,计数可能会增加+50,这将影响代码的其余部分。谢谢,这回答了我的问题。Python不允许我调用变量
class numbers():
    def __init__(self):
        self.minnum = 1
        self.maxnum = 100
        self.num = 1
        self.points = 0
        self.count = 0
    def num(self):
        while self.num in range(self.minnum, (self.maxnum + 1)):
            self.points += int(self.num + 300 * 2 * self.num / 3)
            self.num += 1
            if self.count < (self.points / 4):
                self.num -= 1
                break
        return self.num
number = numbers()
number.count = 9000
print number.num #Prints "1"
def __init__(self, count):
    self.count = count
    # etc...

number = numbers(9000)