python第一版005讲第0题求助
各位大佬求助{:10_266:} 为什么我用while not isinstance(temp, int),我无论输入一个整数还是字符串都会进入循环呢。代码如下:[*]import random
[*]times = 3
[*]secret = random.randint(1,10)
[*]print('------------------我爱鱼C工作室------------------')
[*]guess = 0
[*]print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")
[*]while (guess != secret) and (times > 0):
[*] temp = input()
[*] while not isinstance(temp,int):
[*] print("字符类型出错,请输入整数:", end = " ")
[*] temp = input()
[*] guess = int(temp)
[*] times = times - 1 # 用户每输入一次,可用机会就-1
[*] if guess == secret:
[*] print("我草,你是小甲鱼心里的蛔虫吗?!")
[*] print("哼,猜中了也没有奖励!")
[*] else:
[*] if guess > secret:
[*] print("哥,大了大了~~~")
[*] else:
[*] print("嘿,小了,小了~~~")
[*] if times > 0:
[*] print("再试一次吧:", end=" ")
[*] else:
[*] print("机会用光咯T_T")
[*]print("游戏结束,不玩啦^_^")
执行结果如下:
------------------我爱鱼C工作室------------------
不妨猜一下小甲鱼现在心里想的是哪个数字: 1
字符类型出错,请输入整数: 1
字符类型出错,请输入整数: 1
字符类型出错,请输入整数: 1
字符类型出错,请输入整数: g
字符类型出错,请输入整数: g
字符类型出错,请输入整数: fhfgh
字符类型出错,请输入整数: 1.0
字符类型出错,请输入整数: 2.22
字符类型出错,请输入整数: ?
发代码行的 代码行如下:
import random
times = 3
secret = random.randint(1,10)
print('------------------我爱鱼C工作室------------------')
guess = 0
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")
while (guess != secret) and (times > 0):
temp = input()
while not isinstance(temp,int):
print("字符类型出错,请输入整数:", end = " ")
temp = input()
guess = int(temp)
times = times - 1 # 用户每输入一次,可用机会就-1
if guess == secret:
print("我草,你是小甲鱼心里的蛔虫吗?!")
print("哼,猜中了也没有奖励!")
else:
if guess > secret:
print("哥,大了大了~~~")
else:
print("嘿,小了,小了~~~")
if times > 0:
print("再试一次吧:", end=" ")
else:
print("机会用光咯T_T")
print("游戏结束,不玩啦^_^")
焦健鬼 发表于 2020-5-17 11:26
发代码行的
代码如下{:10_254:}
import random
times = 3
secret = random.randint(1,10)
print('------------------我爱鱼C工作室------------------')
guess = 0
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")
while (guess != secret) and (times > 0):
temp = input()
while not isinstance(temp,int):
print("字符类型出错,请输入整数:", end = " ")
temp = input()
guess = int(temp)
times = times - 1 # 用户每输入一次,可用机会就-1
if guess == secret:
print("我草,你是小甲鱼心里的蛔虫吗?!")
print("哼,猜中了也没有奖励!")
else:
if guess > secret:
print("哥,大了大了~~~")
else:
print("嘿,小了,小了~~~")
if times > 0:
print("再试一次吧:", end=" ")
else:
print("机会用光咯T_T")
print("游戏结束,不玩啦^_^")
本帖最后由 liuzhengyuan 于 2020-5-17 11:36 编辑
input 输入的是字符串,当然不行
用 isdigit()
temp = input()
while not temp.isdigit():
...
求【最佳答案】~{:10_254:} 易夜宝福 发表于 2020-5-17 11:29
代码如下
input默认返回的是字符串,可以用字符串方法:
while not temp.isdigit(): 易夜宝福 发表于 2020-5-17 11:29
代码如下
来,给你
import random
times = 3
secret = random.randint(1,10)
print('------------------我爱鱼C工作室------------------')
guess = 0
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")
while (guess != secret) and (times > 0):
temp = input()
try:
int(temp)
except:
print("字符类型出错,请输入整数:", end = " ")
temp = input()
guess = int(temp)
times = times - 1 # 用户每输入一次,可用机会就-1
if guess == secret:
print("我草,你是小甲鱼心里的蛔虫吗?!")
print("哼,猜中了也没有奖励!")
else:
if guess > secret:
print("哥,大了大了~~~")
else:
print("嘿,小了,小了~~~")
if times > 0:
print("再试一次吧:", end=" ")
else:
print("机会用光咯T_T")
print("游戏结束,不玩啦^_^")
如果帮到你了,就设成最佳吧{:10_287:} liuzhengyuan 发表于 2020-5-17 11:29
input 输入的是字符串,当然不行
用 isdigit()
如果我想用isinstance做判断:guess = int(temp)
while not isinstance(guess,int):
这样可以吗
因为input是接受用户输入转为字符串类型返回,temp的类型就为str
isinstance(temp,int)
所以这里永远返回的是False
又因为你在前面加了 not导致永远为True所以怎么样都可以继续循环了
你可以用字符串方法 isdigit()这个是直接判断字符串内的字符是否是为数值类型的,若是返回True,否则返回False
while not temp.isdigit():
改成这样即可 本帖最后由 liuzhengyuan 于 2020-5-17 11:39 编辑
易夜宝福 发表于 2020-5-17 11:36
如果我想用isinstance做判断:
这样可以吗
不可以,因为如果我输入的不是数字
使用 int() 时就会出错
所以python 专门搞了一个 isdigit()
比如
temp = 'a'
guess = int(temp)就会报错
如果帮到你了,就设成最佳吧{:10_287:} 易夜宝福 发表于 2020-5-17 11:36
如果我想用isinstance做判断:
这样可以吗
不行,如果temp是str,会报错,可以看看我的 易夜宝福 发表于 2020-5-17 11:36
如果我想用isinstance做判断:
这样可以吗
这样不推荐 因为你当你temp 输入的不是数值时候 就会报错int 是把字符串类的数值转为整型,而你如果字符串输入的是字母就无法转换,就会报错 liuzhengyuan 发表于 2020-5-17 11:37
不可以,因为如果我输入的不是数字
使用 int() 时就会出错
所以python 专门搞了一个 isdigit()
嗯嗯,了解{:10_305:} {:10_257:} Twilight6 发表于 2020-5-17 11:39
这样不推荐 因为你当你temp 输入的不是数值时候 就会报错int 是把字符串类的数值转为整型,而你如果字 ...
了解,谢谢哈{:10_287:} qiuyouzhi 发表于 2020-5-17 11:33
input默认返回的是字符串,可以用字符串方法:
了解,谢谢哈{:10_276:} 焦健鬼 发表于 2020-5-17 11:35
来,给你
如果帮到你了,就设成最佳吧
了解,谢谢哈。不过有人先回答了。下次一定{:10_278:} Twilight6 发表于 2020-5-17 11:37
因为input是接受用户输入转为字符串类型返回,temp的类型就为str
所以这里永远返回的是False
谢谢哈。下次一定最佳{:10_278:} 易夜宝福 发表于 2020-5-17 11:43
了解,谢谢哈。不过有人先回答了。下次一定
没事,你可以给我评个分
页:
[1]
2