Python 的input 能否控制数据输入类型
各位鱼油我刚开始学习Python,遇到个问题,因为Python3中的input输入后的数据类型均为str类型,请问鱼油,是否可以针对Python的input数据类型做判断和动作。
源码如下:
import random #定义随机函数
times = 3 #定义尝试次数
secret = random.randint(0,10)#生成0-10的随机数
guess = 0
print ('--------------我爱鱼C工作室-----------------')
print('猜一猜我心目中的数字(0-10之间):', end='')
print('你有%d机会:'%(times))
while (guess != secret) and (times > 0): #循环判断如果随机数和输入数值不相同,且次数还在范围内
times = times - 1 #次数递减
temp = input()#输入数值
if isinstance(temp,int) != True: #判断数据类型
print('您输入的数据:'+ temp +'不合法,请重新输入我心目中的数字(0-10)之间')
else:
guess = int(temp)
if guess == secret:
print('猜对了!')
print('猜对了也不给奖励!你咬我呀!')
else:
if guess > secret:
print('哥,大了大了!还有%d机会' % (times))
else:
print('嘿,小了小了!还有%d机会' % (times))
if times > 0:
print('在尝试一次吧', end='')
else:
print('没机会了')
print('我心目中的数字是%d' % (secret))
print('游戏结束!') 这种方法是不可取的,if isinstance(temp,int) != True:判断时,temp永远为str,对于初学者可以用temp.isdigit()做简单的判定,最好的方法是用异常处理try 冬雪雪冬 发表于 2019-7-27 10:47
这种方法是不可取的,if isinstance(temp,int) != True:判断时,temp永远为str,对于初学者可以用temp.isdi ...
感谢版主的答复,问题已经解决,留下源码以便遇到同样问题的鱼油。
修改源码如下:
ifnot temp.isdigit() == True: #判断数据类型
print('您输入的数据:'+ temp +'不合法,请重新输入我心目中的数字(0-10)之间')
else:
guess = int(temp) 给你提一点建议:
你的while循环的第一个条件是guess!=secret,但你的guess的初始值为0,而且secret在0-10之间,也就是guess一开始就可能==secret,返回False,那么while循环将不会被执行,直接print('游戏结束!') 永恒的蓝色梦想 发表于 2019-7-27 18:46
给你提一点建议:
你的while循环的第一个条件是guess!=secret,但你的guess的初始值为0,而且secret在0-10 ...
的确有些纰漏,感谢提醒。
不过我可以选择把guess的初始值放到0-10之外,比如11或者把随机范围缩小成1-10。 本帖最后由 永恒的蓝色梦想 于 2019-7-27 19:14 编辑
LuckFly 发表于 2019-7-27 18:59
的确有些纰漏,感谢提醒。
不过我可以选择把guess的初始值放到0-10之外,比如11或者把随机范围缩小成1-1 ...
你为什么不去掉那一行呢?
不设置初始值也是一样的
只不过你需要稍微修改一下你的代码 永恒的蓝色梦想 发表于 2019-7-27 19:01
你为什么不去掉那一行呢?
不设置初始值也是一样的
只不过你需要稍微修改一下你的代码
比如呢? LuckFly 发表于 2019-7-27 19:15
比如呢?
比如这样:import random #定义随机函数
times = 3 #定义尝试次数
secret = random.randint(0,10)#生成0-10的随机数
guess = 0
print ('--------------我爱鱼C工作室-----------------')
print('猜一猜我心目中的数字(0-10之间):', end='')
print('你有%d机会:'%(times))
while times > 0: #循环判断如果随机数和输入数值不相同,且次数还在范围内
times = times - 1 #次数递减
temp = input()#输入数值
if isinstance(temp,int) != True: #判断数据类型
print('您输入的数据:'+ temp +'不合法,请重新输入我心目中的数字(0-10)之间')
else:
guess = int(temp)
if guess == secret:
print('猜对了!')
print('猜对了也不给奖励!你咬我呀!')
break
else:
if guess > secret:
print('哥,大了大了!还有%d机会' % (times))
else:
print('嘿,小了小了!还有%d机会' % (times))
if times > 0:
print('在尝试一次吧', end='')
else:
print('没机会了')
print('我心目中的数字是%d' % (secret))
print('游戏结束!')而且,你为什么不用elif呢? {:10_266:}学习了 学习了{:9_241:}
页:
[1]