怎样判断输入一个东西为整数,老师说过有两种方法,我这种哪里错了
import randomsecret = random.randint(1,10)
print ('------------------------不放猜一下老子心里面那个数---------------------')
lht = input('不要墨迹哦,快猜:')
number = int(lht)
while type (lht)!= type(1):
print ('抱歉格式错误')
lht = input ('请输入一个整数:')
if type(lht)==type(1):
break
while number != secret:
lht = input('猜错了请重新输入:')
number = int(lht)
if number == secret:
break
else:
if number > secret:
print('大了,大了''\n')
else:
print("小了,小了"'\n')
print('你是老子的蛔虫吗''\n''猜对了也没有奖励')
print('游戏结束不玩了') 1.如果输入的是汉字字符串或者浮点数字符串,这一行会报错(例: '你',''1.5")
number = int(lht)
2. lht 是字符串,类型永远与 1 这个整型是不一样的
type (lht)!= type(1):
3.代码有点重复 字符串的isdigit方法可以判断字符串是不是正整数。不能判断负数和浮点数。
或者try...except来判断。 input给的还是一个字符串,所以你type出来的一个是字符串,一个是整数当然不对啦
试试:
s = input('请输入一个整数:')
while not s.isdigit():
print('抱歉,输入不合法。',end='')
s = input('请输入一个整数:')
具体用法见课后作业啦,再发一个完整版
import random
times = 3
secret = random.randint(1,9)
print('--------------我爱鱼C工作室--------------')
guess = 0
print("不妨猜一下小甲鱼心里想的是那个数字:",end="")
while (guess != secret) and (times > 0):
temp = input()
while not temp.isdigit():
print('抱歉,输入不合法。',end='')
temp = input('请输入一个整数:')
guess = int(temp)
times = times - 1
if guess == secret:
print('我草,你是小甲鱼心里的蛔虫吗?!')
print('哼,猜中了也没有奖励!')
else:
if guess > secret:
print('哥,大了大了~~~')
else:
print('嘿,小了!小了~~~')
if times > 0:
print('再试一次吧:',end="")
else:
print('机会用光咯T_T')
print('游戏结束,不玩拉^_^')
圣剑三刀。abx 发表于 2018-2-18 21:36
input给的还是一个字符串,所以你type出来的一个是字符串,一个是整数当然不对啦
试试:
s = input('请输 ...
我就不知道为什么一开始 guess = 0
然后 while 后面 guess 和 secret 比较 ,这两个比较肯定为真啊, 那比较有什么用?直接只比较times
涛4091 发表于 2018-2-19 15:42
我就不知道为什么一开始 guess = 0
然后 while 后面 guess 和 secret 比较 ,这两个比较肯定为真啊,...
我们理下思路,程序的目的是:答对了游戏结束,答错了重答,有三次机会。
所以guess 和 while比较就是为了答对了程序就结束了,而不是答对了还要答。(我自己也错过,可以运行试试哦)
第一个问题,为啥guess一开始赋值0,其实你赋值几都行,只有一个要求:不等于guess,也就是说,不能选用你随机模块的数字范围中的数。为什么?你发现吗第一次问你叫你要猜数字(在while外),而你答错了时让你重答(在while内),然而这样的话第一次因为在while外所以程序不会告诉你是大了还是下啦,答对了甚至直接程序结束。guess等于0就是让第一次你输入的数字就在while中体现。我知道比较难理解,建议可以自己按程序的每一步走走看,这样很有帮助哦。 圣剑三刀。abx 发表于 2018-2-19 16:23
我们理下思路,程序的目的是:答对了游戏结束,答错了重答,有三次机会。
所以guess 和 while比较就是为 ...
嗯。。好像是那样
那个按程序一步一步进行的功能在哪找 圣剑三刀。abx 发表于 2018-2-19 16:23
我们理下思路,程序的目的是:答对了游戏结束,答错了重答,有三次机会。
所以guess 和 while比较就是为 ...
import random
secret = random.randint(1,10)
print ('------------------------不放猜一下老子心里面那个数---------------------')
print ('不妨猜一下老子心里面那个数字')
times = 3
while times > 0:
lht = input('请输入一个整数:')
iflht.isdigit():
number = int (lht)
if number == secret :
print ('我操,你是老子肚子里的蛔虫吗')
print ('猜对了也没有奖励')
elif number > secret :
print ('大了 大了')
else:
print ('小了 小了')
if times > 1 :
print ('在试一次吧')
else:
print ('机会用光了')
else :
print ('输入的格式错误,重新输入')
times = times - 1
print('游戏结束不玩了')
没赋初值也可以啊 而且我看着第一次比较也在while内 涛4091 发表于 2018-2-19 17:10
没赋初值也可以啊 而且我看着第一次比较也在while内
嗯对的,我仔细看了下,你的问题就在如果机会没用完就答对了,程序还是会让你输入数字对吧。我们希望答对了程序就结束了。这就是guess(你的lht)为什么要存在、赋值且与secret作比较的原因。你可以让它跑起来看看我说的对不对 圣剑三刀。abx 发表于 2018-2-19 17:20
嗯对的,我仔细看了下,你的问题就在如果机会没用完就答对了,程序还是会让你输入数字对吧。我们希望答对 ...
那加个 break 我试了试 也可以吧? 涛4091 发表于 2018-2-19 17:31
那加个 break 我试了试 也可以吧?
嗯,能答对程序结束就对啦。
页:
[1]