用Python做一个超简单的小游戏(一听就懂)

前言

有的人可能学过一点Python基础,但不知道干什么好。今天就教大家做一个简单的小游戏


未经允许,禁止转载


文章目录

  • 前言
  • 写它会用到
  • 源码先抛出来
  • 知识讲解
    • random
      • 介绍
      • 语法
      • 方法参数表
      • 举例
    • while
      • 语法
      • 举例
  • 拆分代码讲解
    • 产生随机数
    • 循环产生随机数
    • 增加循环条件和简单的判断
    • 解决报错&增加输错重输功能、限制用户输入次数功能
  • 效果
  • 缺陷


写它会用到

while 循环
random 模块
if 语句
输入输出函数
用Python做一个超简单的小游戏(一听就懂)_第1张图片


源码先抛出来

import random #导入random模块,用来产生随机数
times = 10 #设置我们的答题次数
secret = random.randint(1,100) #随机给random一个1~9的数字,再给secret赋值
print('---------------Python要和你玩猜数字游戏---------------')
print('猜一个1-100之间的数')
guess = 0 #设定guess的值
while (guess != secret) and (times > 0): #结束条件,要么次数用完,要么答对。
    guess = int(input("猜猜我想的是几:")) #用户输入,并转换为整数
    times = times - 1 #用户每输入一次,猜数次数就-1
    if guess == secret: #如果用户输入对了
        print("恭喜你猜对了!") 
        print("哼,猜中了也没有奖励!")
        break #跳出循环
    else:
        if guess > secret:
            print("大了大了~~~")# 之所以不在这里设置重输,是因为在if times > 0: 中已经弄过了,这样避免输两次,也避免次数已用完还让重输
        else:
            print("小了小了-_-")
    if times > 0: #判断次数是否用完
        print("再试一次吧:", end=" ")
    else:
        print("机会用光咯T_T")
        print("我想的是"+str(secret)+"!") #揭晓答案
print("游戏结束,不玩啦^_^")

知识讲解

random

介绍

Python中的随机数操作较简单,不像其他高级语言那样必须用特定的公式才能产生

语法

import random #导入模块
random.方法() #调用方法

方法参数表

方法 作用
randint(一个整数,另一整数) 产生从一个整数-另一整数的随机整数
uniform(a,b) 产生 a 到 b之间的随机浮点数

目前我们用到的是randint()方法。

举例

>>> import random
>>> random.randint(0,10)
5
>>> random.randint(0,10)
2
>>> 

while

用Python做一个超简单的小游戏(一听就懂)_第2张图片

语法

while 循环条件:
	语句

举例

num = 0
while num<3:#如果num小于3,就进入循环
	num+=1 #等同num=num+1
	print(num)

图:
用Python做一个超简单的小游戏(一听就懂)_第3张图片
用Python做一个超简单的小游戏(一听就懂)_第4张图片
用Python做一个超简单的小游戏(一听就懂)_第5张图片

拆分代码讲解

产生随机数

import random
random.randint(0,100)

运行结果:

>>> random.randint(0,100)
50
>>> random.randint(0,100)
28
>>> random.randint(0,100)
35
>>> random.randint(0,100)
15
>>> random.randint(0,100)
10
>>> random.randint(0,100)
27
>>> random.randint(0,100)
89
>>> random.randint(0,100)
43
>>> random.randint(0,100)
90
>>> random.randint(0,100)
16
>>> random.randint(0,100)
80
>>> 

现在我们可以产生随机数了,但是只有调用一次方法才能产生一次随机数,怎么办呢?对了,可以用循环来反复做相同的事。


循环产生随机数

import random
while True:
	random.randint(0,100)

运行结果:

68
25
51
44
75
21
70
2
4
25
95
34
19
59
63
98
93
15
0
60
69
33
2
84
38
54
30
64
69
94
94
8
24
95
80
69
83
20
48
92
24
48
51
77
25
23
68
70
84
34
56
86
30
39
12
90
0
36
31
23
34
51
60
26
81
63
88
74
40
55
69
47
44
8
38
6
63
3
72
76
8
100
88
20
99
49
47
35
80
7
49
6
78
42
20
44
49
49
71
53
55
67
51
55
39
87
98
19
61
70
76
58
94
47
73
10
22
29
89
95
33
98
44
15
29
4
78
16
13
71
78
43
18
43
29
64
87
8
66
91
55
12
81
8
48
20
23
5
6
Traceback (most recent call last):
  File "", line 2, in <module>
    random.randint(0,100)
KeyboardInterrupt

>>> 

可以看到,它一直输出随机数,这并不是我们想要的,我们想要的是用户输入一个数,和这个随机数比对

增加循环条件和简单的判断

对上述采取的方法是:把产生的随机数存入变量,进行判断、比对

import random
secret = random.randint(0,100) #产生随机整数
guess = input('猜猜我想的是几:')#获取用户输入
while guess!=secret:#当用户输入不等于产生的数时,进入循环
	if guess>secret:#当用户输入的数大于随机数时	
		print("大了大了@_@")#打印提示文字
	else:#当用户输入的数小于随机数时
		print("小了小了>_<")#打印提示文字
print("恭喜你答对了!")
print("哼,对了也没有奖励!")
print('游戏结束,不玩了~')

看似没有问题,我们来运行一下
运行后发现报错了:

猜猜我想的是几:12
Traceback (most recent call last):
  File "C:/Users/Administrator/Desktop/aa.py", line 5, in <module>
    if guess>secret:#当用户输入的数大于随机数时
TypeError: '>' not supported between instances of 'str' and 'int'

哦,原来是没有转换类型,input返回的是字符串,字符串不能和整数比较

改后:

import random
secret = random.randint(0,100) #产生随机整数
guess = int(input('猜猜我想的是几:'))#获取用户输入,并转化为整数
while guess!=secret:#当用户输入不等于产生的数时,进入循环
	if guess>secret:#当用户输入的数大于随机数时	
		print("大了大了@_@")#打印提示文字
	else:#当用户输入的数小于随机数时
		print("小了小了>_<")#打印提示文字
print("恭喜你答对了!")
print("哼,对了也没有奖励!")
print('游戏结束,不玩了~')

运行:

小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
小了小了>_<
Traceback (most recent call last):
  File "C:/Users/Administrator/Desktop/aa.py", line 8, in <module>
    print("小了小了>_<")#打印提示文字
KeyboardInterrupt
>>> 

还是有问题!

解决报错&增加输错重输功能、限制用户输入次数功能

同学们想想,当打印提示语后,用户没有重输,会一直满足那个条件,就会循环打印。
那么我们可以增加重输功能,当输的不对时,就重输,就不会循环打印了;
添加限制用户输入功能,这样就避免用户一直猜

1.当然,因为又加了一个功能,答对了的提示就不能放在循环外面了,
2.之所以不在打印大了小了设置重输,是因为在if times > 0: 中已经弄过了,这样避免输两次,也避免次数已用完还让重输

import random #导入random模块,用来产生随机数
times = 10 #设置我们的答题次数
secret = random.randint(1,100) #随机给random一个1~9的数字,再给secret赋值
print('---------------Python要和你玩猜数字游戏---------------')
print('猜一个1-100之间的数')
guess = 0 #设定guess的值
while (guess != secret) and (times > 0): #结束条件,要么次数用完,要么答对。
    guess = int(input("猜猜我想的是几:")) #用户输入,并转换为整数
    times = times - 1 #用户每输入一次,猜数次数就-1
    if guess == secret: #如果用户输入对了
        print("恭喜你猜对了!") 
        print("哼,猜中了也没有奖励!")
        break #跳出循环
    else:
        if guess > secret:
            print("大了大了~~~")# 之所以不在这里设置重输,是因为在if times > 0: 中已经弄过了,这样避免输两次,也避免次数已用完还让重输
        else:
            print("小了小了-_-")
    if times > 0: #判断次数是否用完
        print("再试一次吧:", end=" ")
    else:
        print("机会用光咯T_T")
        print("我想的是"+str(secret)+"!") #揭晓答案
print("游戏结束,不玩啦^_^")

效果

用Python做一个超简单的小游戏(一听就懂)_第6张图片

缺陷

没有设置输入限制,如果用户输入的是字母,那int转换就会报错;这个我就不写了,有兴趣的同学可以在评论区写一下。有什么不懂的地方,也欢迎在评论区提问

你可能感兴趣的:(Python,python,游戏,字符串,random)