添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • 1: Create a Custom Calculator
  • 2: What is a Computer Language?
  • 3: Quiz Games and If Statements
  • 4: Guessing Games with Random Numbers and Loops
  • 5: Introduction to Graphics
  • 6: Back to Looping
  • 7: Introduction to Lists
  • 8: Introduction to Animation
  • 9: Functions
  • 10: Controllers and Graphics
  • 11: Bitmapped Graphics and Sound
  • 12: Introduction to Classes
  • 13: Introduction to Sprites
  • 14: Libraries and Modules
  • 15: Searching
  • 16: Array-Backed Grids
  • 17: Sorting
  • 18: Exceptions
  • 19: Recursion
  • 20: Formatting
  • YouTube Playlist
  • Hi! I'm thinking of a random number between 1 and 100. --- Attempt 1 Guess what number I am thinking of: 50 Too high. --- Attempt 2 Guess what number I am thinking of: 25 Too high. --- Attempt 3 Guess what number I am thinking of: 17 Too high. --- Attempt 4 Guess what number I am thinking of: 9 Too low. --- Attempt 5 Guess what number I am thinking of: 14 Too high. --- Attempt 6 Guess what number I am thinking of: 12 Too high. --- Attempt 7 Guess what number I am thinking of: 10 Too low. Aw, you ran out of tries. The number was 11.

    等一下,这跟图形和视频游戏有何相关? 关系很大。 游戏显示的每一 其实都是在执行循环。 你也许对游戏显示的每秒帧数(FPS)这个统计数据很熟悉。FPS表示了计算机每秒更新屏幕显示的次数。 速率要高,游戏越流畅。(尽管超过60FPS就会高于大多数显示器本身的更新频率,但是没有太大意义。) 图例 4.1 展示了游戏Eve Online和运行它时电脑能够显示的帧数的图形变化。 fig.fps

    Figure 4.1: FPS在视频游戏中

    在游戏中的循环的工作原理就和图例中的流程图一样 4.2 . 尽管现在的游戏无比复杂,但是循环的内部其实和我们第一站写的计算器是一样的。 获得用户输入,执行计算,输出结果。在视频游戏里,我们总在努力以每秒60次的速率重复这些过程。 fig.game_loop

    Figure 4.2: Game loop

    循环之中还可以嵌套循环。一个真正的“循环的循环'。 来看下面这个“Draw Everything”的图例 4.2 . 这组代码通过循环把每一个游戏中需要的物件画出来。 这个循环是在画出游戏每一帧的循环之内的,如图所示 4.3 . fig.draw_everything

    Figure 4.3: Draw everything loop

    在Python中有两种主要的循环, for 循环和 while 寻呼。循如果你想重复一个已知的次数,可使用 for 循环。如果你想循环直到发生了什么事件 (比如用户按下了退出按钮)那就使用 while 循环。

    例如, for 循环可以用来打印所有学生的成绩,如果计算机知道学生人数的话。 while 循环可以用于查看用户什么时候点击了鼠标按键,因为计算机无法得知需要等多久。

    4.1 For循环

    下面这个 for 循环的例子运行了五次 print 语句。 它也可以轻松地运行100或者1000000次,只需要把5改成需要循环的次数。 请注意在写法上 for 语句和 if 语句的相似性。 两者都以冒号结束,并使用缩进来标记需要被影响的语句。 for i in range(5): print("I will not chew gum in class.")

    Output:
    I will not chew gum in class. I will not chew gum in class. I will not chew gum in class. I will not chew gum in class. I will not chew gum in class.

    第一行中的 i 是以个记录和追踪程序熏话了多少次的变量。 它是一个新的变量并且可以被任何合法的变量名来命名。程序员通常使用 i 来做循环变量名, 因为i是 increment (增长)的缩写。 这个变量能够帮助我们追踪循环何时结束。

    range 函数控制了循环的次数。在这个例子中,循环了5次。

    下面这个例子会打印“Please,”五次,和“Can I go to the mall?”仅一次。 “Can I go to the mall?”没有缩进所以它不属于 for 循环,也就不会打印直至 for 循环完成。 比如程序员可能会使用 lineNumber ,如果她正在处理一个文本文件。

    如果一个程序员想要从1循环到10, 有几种方法可以做到。第一种方法是给 range 函数传递两个数字而不是一个。 第一个数字是起始值,第二个是比结尾值大1的数。

    的确需要花一些练习时间去习惯 for 包含起始值但不包含结尾值的概念。 下面这个例子使用了 (1,11) 的范围,数字1到10会被打印出来。起始值1包括在内,而末尾值11并没有。 for i in range(1, 11): print(i)

    Output:

    如果一个程序需要以2来计数或者其他的数量,方法很简单。也有两种途径。 最简单的办法是使用第三个数来告诉range函数它是以2来增加的。第二种办法是依然以1来增加,但是变量本身乘以2。 下面这段代码列出了这两种方法。 #两种方法去打印从2到10的偶数 for i in range(2,12,2): print(i) for i in range(5): print((i + 1) * 2)

    我们也可以通过给range函数一个负的步长来倒者数到0。 在下面这段代码中,是从10开始,一直倒数但不含0,每次增加的是-1。 使用这样的循环最难的地方是有时候会不小心把起始值和末尾值调换了位置。 这样的程序应该以大的数开始。而通常 for 循环都是从 range 函数里最小的值开始计数的。 for i in range(10, 0, -1): print(i) 累积一个总的得分,一个人账户上所有的交易,用累积总计求平均数,等等。 你或许应该给这段代码做上书签,以便将来对此回来查阅。 下面的代码中,用户依次输入了五个数字,程序求出了它的累积总计。 total = 0 for i in range(5): new_number = int(input("Enter a number: " )) total += new_number print("The total is: ", total)