最近开始在学用Python做数据分析,昨天课程,老师留了一个写猜数字小游戏代码的作业,捣鼓了一个多小时,最后还请了大神帮忙🤣
题目是这样的:
编写猜数字小游戏的代码:输入一个数字,分别针对猜对数字、猜错数字、输入错误给予判断
作为一个没写过代码的小白,拿到题目后我什么也没分析,直接按照题目给的条件开始写了
a = int(input('请输入一个数字:'))
if(a==1):
print('恭喜你,猜对了')
elif(a!=1):
print('很遗憾,你猜错了,a的值为',a)
elif(a.isdigit() == False):
print('输入错误')
我还自作聪明的给a定义了一个int,但是结果毫不意外地报错了,我也没指望一次就能跑通🙃
在这里,我还没意识到一个最底层的严重问题,就是判断输入内容是不是数字应该放在最开始(感谢大神最后指出)。我一直被a的类型所困扰:
①如果a从一开始被定义为int型,那么在输入str时,与a的int矛盾会报错;
②如果a从一开始定义为str,那么在判断是不是1的时候,因为1是int,就永远不会等于1,且永远不会运行到第三个判断;
最后在大神的提醒下,我改变了一下判断顺序:
a = input('请输入一个数字:')
if(a.isdigit() == False):
print('输入错误')
elif(a==1):
print('恭喜你,猜对了')
elif(a!=1):
print('很遗憾,你猜错了,a的值为',a)
但是这个还是有问题的,还是之前的问题2,a的类型和1不同,导致永远无法作比较。所以为了解决这个问题,我想到了一个不完美的抖机灵解决方法,把1变为字符型
elif(a=='1'):
这样代码最终算是跑通了,不过大神后面也给了种解法,就是一开始定义a为字符型,后面在把a转型为int,这样就能比较了
a = input('请输入一个数字:')
if(a.isdigit() == False):
print('输入错误')
else:
a = int(a)
if (a==1):
print('恭喜你,猜对了')
else:
print('很遗憾,你猜错了,a的值为', a)
感谢大神大晚上被我拉着,不厌其烦的给我答疑ღ( ´・ᴗ・` )
大神最近在重新整理他的博客,友情推广:https://zhangze.me/
网友评论