我不明白以下代码的输出是16:

时间:2019-07-14 02:11:04

标签: pycharm python-3.7

我正在从python页面进行本教程,无论我多么努力,我都不明白这段代码的输出是16。 (不必说我在这里询问之前先用Google搜索(DuckDuckGo))。

class MyClass:
    i = 12345

    def f(self):
        return 'hello world'    

x = MyClass()

x.counter = 1
while x.counter < 10:
    x.counter = x.counter * 2
print(x.counter)

这是“ Python教程” https://docs.python.org/3.7/tutorial/classes.html#class-objects

中的页面

1 个答案:

答案 0 :(得分:1)

这很简单,通过在乘法之前和之后的每次迭代过程中打印x.counter的值,我们可以获得x.counter的以下值:

class MyClass:
    i = 12345

    def f(self):
        return 'hello world'

x = MyClass()

x.counter = 1
while x.counter < 10:
    print('before', x.counter)
    x.counter = x.counter * 2
    print('after, x.counter)
print(x.counter)

before 1
after 2
before 2
after 4
before 4
after 8
before 8
after 16
16

我们看到x.counter的值在每次迭代中加倍。上次输入为8,然后加倍以提供给我们16。 while循环指定x.counter小于10时它将继续,现在达到16则将停止。