python猜数字输入字母报错_一听就懂:用Python做一个超简单的小游戏

这篇博客介绍了如何用Python编写一个简单的猜数字游戏,涉及while循环、random模块、if语句和输入输出。文章通过逐步解析代码,展示了如何处理用户输入字母导致的错误以及限制用户猜测次数。最后,博主提醒读者游戏存在用户输入非数字时的潜在问题。
摘要由CSDN通过智能技术生成

写它会用到

while 循环

random 模块

if 语句

输入输出函数

源码先抛出来

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

#0## 介绍

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

语法

import random #导入模块

random.方法() #调用方法

方法参数表

方法作用

randint(一个整数,另一整数)

产生从一个整数-另一整数的随机整数

uniform(a,b)

产生 a 到 b之间的随机浮点数

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

举例

>>> import random

>>> random.randint(0,10)

5

>>> random.randint(0,10)

2

>>>

while

语法

while 循环条件:

语句

举例

num = 0

while num<3:#如果num小于3,就进入循环

num+=1 #等同num=num+1

print(num)

图:

拆分代码讲解

产生随机数

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

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

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

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("游戏结束,不玩啦^_^")

效果

缺陷

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

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

想要获取更多Python学习资料可以加

QQ:2955637827私聊

或加Q群630390733

大家一起来学习讨论吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值