Python游戏编程(一)“猜数字”游戏

有人说任务驱动式的学习方式会更有效率,有人说兴趣是最好的老师。

所以我打算调试前人设计好的一些小游戏,来做为自己Python入门的教材。

下面是对现有代码的分析,在分析每一行代码在游戏中发挥的作用的同时,分析代码中涉及到的编程语法。

通过设计一个小的游戏来学习Python编程语言,首先以最基础的“猜数字”游戏入手,详细的介绍每一行代码,并讲解代码的其他功能和属性,在编写游戏的过程中学会编程。

(一)源代码:

#This is a Guess The Number game. 
import random

#赋值过程自动创建变量
guessesTaken = 0

print("Hello! What is your name?")
myName = input()

number = random.randint(1, 20)
print("Well," + myName + ", I an thinking of a number between 1 and 20.")

for i in range(6):
    print("Take a guess.")
    guess = input()
    guess = int(guess)
    
    if guess < number:
        print("Your guess is too low.")
        
    if guess > number:
        print("Your guess is too high.")
        
    if guess == number:
        break    #跳出for循环
    
if guess == number:
    guessesTaken = i
    guessesTaken = str(guessesTaken)
    print("Good job," + myName + "Your guessed my number in " + guessesTaken +" guesses!")
    
if guess != number:
    number = str(number)
    print("Nope. The number I was thinking of was" + number +".")

运行结果:

runfile('D:/Z/Python/Python游戏编程/游戏编程代码/猜数字.py', wdir='D:/Z/Python/Python游戏编程/游戏编程代码')
Hello! What is your name?

低头写作业
Well,低头写作业, I an thinking of a number between 1 and 20.
Take a guess.

13
Your guess is too low.
Take a guess.

16
Your guess is too low.
Take a guess.

18
Your guess is too high.
Take a guess.

177
Your guess is too high.
Take a guess.

17
Good job,低头写作业Your guessed my number in 4 guesses!

这个游戏用到的都是最基本的语法。下面进行详细的分析:

(二)详细分析:

游戏主要内容:

  • import语句;
  • 模块;
  • randint()函数;
  • for语句
  • 语句块
  • str()函数、int()函数、float()函数;
  • 布尔类型;
  • 比较操作符;
  • =和==的区别;
  • if语句;

首先导入random模块以便程序可以调用random.randint()函数,该函数将会产生一个随机数,供用户进行猜测。

#导入random模块
import random  

导入random模块,以便程序可以调用random.randint()函数,该函数将会产生一个随机数,供用户进行猜测。

import语句:
语句是执行某些动作的指令,不像表达式那样会计算一个值。
例如赋值语句:把一个值存储到一个变量中。

Python包含许多内建的函数,有些储存在模块中,使用import语句导入我们的程序中后,就可以使用这些函数了。

guessesTaken = 0

新建变量用于保存玩家猜测过的次数。Python赋值后直接创建变量。

print("Hello! What is your name?")
myName = input()

调用print()函数,把传递给它的字符串参数显示到屏幕上。函数就像是程序中的一个小程序。input()函数用于获取玩家的姓名,注意input()函数传递玩家输入的字符串。

number = random.randint(1, 20)

调用random模块中的randint()函数,产生一个随机数,赋值给变量number。代码中的randint(1, 20)函数会返回一个1到20之间的整数并赋值给变量number。

print("Well," + myName + ", I an thinking of a number between 1 and 20.")

调用print()函数根据玩家姓名来欢迎玩家,并且告诉玩家猜测数字的范围。

for i in range(6):
    print("Take a guess.")
    guess = input()
    guess = int(guess)
    
    if guess < number:
        print("Your guess is too low.")
        
    if guess > number:
        print("Your guess is too high.")
        
    if guess == number:
        break    #跳出for循环

for循环:

通过for循环一遍一遍的执行代码,该段代码会重复执行6次。for语句以关键字for打头,后面跟着一个新的变量、in关键字、对range()函数的一次调用,range()函数指定了循环应该执行的次数,此外还包括一个冒号。

break语句立刻跳出for循环语句块,跳到for循环结束后的第一行代码。

for语句表示一个循环的开始,循环可以重复的执行相同的代码。当程序执行到一条for语句时,它会进入for语句后面的代码块,运行完所有的代码块之后,执行会回到该语句块的顶部,并再次运行所有的代码。通过循环的每一次执行,叫做一次迭代。可以把for语句理解为:“将如下的语句块中的代码执行一定的次数”。

组织语句块:

Python用语句缩进来确定流程控制结构不同代码块(即语句体)的边界。在一个语句块中的每一行代码都有和语句块第一行代码相同的缩进值,通过改变语句的缩进值来开始和结束一个新的语句块,语句块中可以嵌套语句块。在代码行之后,拥有相同或者更多的缩进值的任何代码行,都被认为是该语句块的一部分。

    guess = int(guess)

int()函数接受一个参数,返回参数的整数形式。尽管可以传递一个字符串给int()函数,但是不能传递任意的字符串,传递给int()的字符串,必须是由数字组成的。
类似的,float()和str()函数分别返回浮点数和字符串类型。
使用int()、float()和str()函数,可以接受一种数据类型的值,而返回另一种数据类型的值。

数据类型

Python中的每一个值,都属于一种数据类型。Python数据类型包括整数型、浮点型、字符串和布尔数据类型。布尔数据类型只有两个值:True或者False,这两个值的首字母必须大写,其余部分为小写。

比较操作符

比较操作符比较两个值,并且会得到一个True或者Flase的布尔值。

在代码中理解比较操作符

a = 21
b = 10
c = 0
 
if ( a == b ):
   print ("1 - a 等于 b")
else:
   print ("1 - a 不等于 b")
 
if ( a != b ):
   print ("2 - a 不等于 b")
else:
   print ("2 - a 等于 b")
 
if ( a < b ):
   print ("3 - a 小于 b")
else:
   print ("3 - a 大于等于 b")
 
if ( a > b ):
   print ("4 - a 大于 b")
else:
   print ("4 - a 小于等于 b")
 
# 修改变量 a 和 b 的值
a = 5;
b = 20;
if ( a <= b ):
   print ("5 - a 小于等于 b")
else:
   print ("5 - a 大于  b")
 
if ( b >= a ):
   print ("6 - b 大于等于 a")
else:
   print ("6 - b 小于 a")

输出结果

1 - a 不等于 b
2 - a 不等于 b
3 - a 大于等于 b
4 - a 大于 b
5 - a 小于等于 b
6 - b 大于等于 a

Python运算符还包括算数运算符、赋值运算符、逻辑运算符等。

其中“等号”赋值操作符(=)用于赋值语句,用来把值储存到变量中;“等于”比较操作符号(==)用于表达式,用来判断两个值是否相等。

if语句
if语句以关键字if打头、后面跟着条件和一个冒号,其中条件只是结果为True或者False的表达式的另一种叫法而已。if语句后面条件为True,则执行冒号后面的代码块,Flase则会跳过if语句块中的代码。

if guess == number:
    guessesTaken = i
    guessesTaken = str(guessesTaken)
    print("Good job," + myName + "Your guessed my number in " + guessesTaken +" guesses!")
    
if guess != number:
    number = str(number)
    print("Nope. The number I was thinking of was" + number +".")

只有字符串值才可以和其他字符串连接,如果把一个整数和一个字符串连接会报错。

这个游戏就介绍到这里。

疫情爆发,也只能待在家里,延迟开学。也是要停课不停学。在开学之前争取每天更新一篇,总结之前学习的内容,也继续学习新的内容。

参考:

  1. 菜鸟教程
  2. http://inventwithpython.com/invent4thed/chapter3.html
  3. 《Python游戏编程快速上手》第四版,AI Sweigart著,李强 译
发布了9 篇原创文章 · 获赞 1 · 访问量 419

猜你喜欢

转载自blog.csdn.net/weixin_45755966/article/details/103994226