哥哥们看下这里那里错了,一直循环抱歉输入不合法
import randomsecret = random.randint(1,10)
print('~~~~~~~~~~~我爱鱼C工作室~~~~~~~~~~~')
temp = input("不妨猜猜小甲鱼现在心里想的是哪个数字:")
while type(temp) != type(1):
print("抱歉输入不合法")
temp = input("请输入一个整数:")
temp = int(temp)
else:
guess = int(temp)
while guess != secret:
temp = input("哎呀,猜错了,请重新输入吧:")
guess = int(temp)
if guess == secret:
print("卧槽,你是小甲鱼心里的蛔虫吗?!")
print("哼,猜中了也没有奖励!")
else:
if guess > secret:
print("哥,大了大了~~~")
else:
print("嘿,小了小了~~~")
print("游戏结束,不玩了^_^")
因为你 input 是接受用户输入并将其转为字符串在赋值给了 temp
所以你的 type(temp) 永远为 字符串 而 type(1) 永远为 整型 导致一直输入不合法 不要用type,用isdigit()等函数,以后会学,先帮你改下:
import random
secret = random.randint(1,10)
print('~~~~~~~~~~~我爱鱼C工作室~~~~~~~~~~~')
temp = input("不妨猜猜小甲鱼现在心里想的是哪个数字:")
while not temp.isdigit():
print("抱歉输入不合法")
temp = input("请输入一个整数:")
temp = int(temp)
else:
guess = int(temp)
while guess != secret:
temp = input("哎呀,猜错了,请重新输入吧:")
guess = int(temp)
if guess == secret:
print("卧槽,你是小甲鱼心里的蛔虫吗?!")
print("哼,猜中了也没有奖励!")
else:
if guess > secret:
print("哥,大了大了~~~")
else:
print("嘿,小了小了~~~")
print("游戏结束,不玩了^_^")
或者用try except 本帖最后由 BIO-张磊 于 2020-6-4 16:28 编辑
一直循环说明。一直在这段代码内
while type(temp) != type(1):
print("抱歉输入不合法")
temp = input("请输入一个整数:")
temp = int(temp)
#input的返回值是str,type(temp)是字符串,1是int,type(1)是整型,两者永远不可能相等
但仔细看了一下你的代码,其实有逻辑错误 咋解决呢
萌新1 发表于 2020-6-4 16:14
咋解决呢
你是看不见楼上回复是吗... qiuyouzhi 发表于 2020-6-4 16:21
你是看不见楼上回复是吗...
看到了 不过没懂哈哈 萌新1 发表于 2020-6-4 16:29
看到了 不过没懂哈哈
你的报错的原因是因为,你输入一个浮点型的数字的时候,比如3.2
temp = "3.2"
之后你在while循环内 int(temp) 这里会报错的。因为int只能把字符串完全为数字的转化为整型,
int("3.2")错误,但int("3")可以
所以你的代码while那边逻辑是有问题的 BIO-张磊 发表于 2020-6-4 16:32
你的报错的原因是因为,你输入一个浮点型的数字的时候,比如3.2
temp = "3.2"
之后你在while循环内 int ...
那应该怎么改 >>> type(input("请输入:"))
请输入:5
<class 'str'>
这就是你错误的原因,我输入了5,但type的类型还是str,而不是int。因为Python中所有通过input进行输入的数据都是字符串形式;
你可以使用isdigit()来判断, isdigit() 方法是检测字符串是否只由数字组成。(如果字符串只包含数字则返回 True 否则返回 False)
既修改为:
while not temp.isdigit():
print("抱歉输入不合法")
temp = input("请输入一个整数:")
temp = int(temp)
import random
secret = random.randint(1,10)
print('~~~~~~~~~~~我爱鱼C工作室~~~~~~~~~~~')
temp = input("不妨猜猜小甲鱼现在心里想的是哪个数字:")
while type(temp) != type(1):
print("抱歉输入不合法")
temp = input("请输入一个整数:")
try:
temp = int(temp)
except ValueError:
pass
else:
guess = int(temp)
while guess != secret:
temp = input("哎呀,猜错了,请重新输入吧:")
guess = int(temp)
if guess == secret:
print("卧槽,你是小甲鱼心里的蛔虫吗?!")
print("哼,猜中了也没有奖励!")
else:
if guess > secret:
print("哥,大了大了~~~")
else:
print("嘿,小了小了~~~")
print("游戏结束,不玩了^_^")
input()
##如果你非要使用type 可以使用try函数
但是可能你又不懂了 萌新1 发表于 2020-6-4 16:34
那应该怎么改
你可以用字符串方法判断字符串内是不是全是 数字
isdigit() 如果字符串只包含数字则返回 True,否则返回 False。
把while type(temp) != type(1) 改成 while not temp.isdigit() 即可
完整代码:
import random
secret = random.randint(1,10)
print('~~~~~~~~~~~我爱鱼C工作室~~~~~~~~~~~')
temp = input("不妨猜猜小甲鱼现在心里想的是哪个数字:")
while not temp.isdigit():
print("抱歉输入不合法")
temp = input("请输入一个整数:")
temp = int(temp)
else:
guess = int(temp)
while guess != secret:
temp = input("哎呀,猜错了,请重新输入吧:")
while not temp.isdigit():
print("抱歉输入不合法")
temp = input("请输入一个整数:")
temp = int(temp)
guess = int(temp)
if guess == secret:
print("卧槽,你是小甲鱼心里的蛔虫吗?!")
print("哼,猜中了也没有奖励!")
else:
if guess > secret:
print("哥,大了大了~~~")
else:
print("嘿,小了小了~~~")
print("游戏结束,不玩了^_^")
yhhpf 发表于 2020-6-4 16:34
这就是你错误的原因,我输入了5,但type的类型还是str,而不是int。因为Python中所有通过input进行输入的 ...
这样用户输入数字可以运行,输入汉字的话第一次会提醒“”抱歉输入不合法“再次输入汉字或者数字就报错 本帖最后由 BIO-张磊 于 2020-6-4 16:43 编辑
萌新1 发表于 2020-6-4 16:34
那应该怎么改
我给你发的代码,try语句是纠错语句,如果你要保留你现有的想法完成的代码逻辑,只能用try语句,你可以把我给你发的跟你的源代码对比一下,其实就只多了一个tyr except。
你的问题请看11楼,满意请采纳 #-*-coding:gbk-*-
import random
secret = random.randint(1 , 10)
print('~~~~~~~~~~~我爱鱼C工作室~~~~~~~~~~~')
while True :
while True :
temp = input("不妨猜猜小甲鱼现在心里想的是哪个数字:")
if temp . isdigit() : break
print('抱歉输入不合法')
guess = int(temp)
if guess == secret :
print("卧槽,你是小甲鱼心里的蛔虫吗?!")
print("哼,猜中了也没有奖励!")
break
else :
if guess > secret : print("哥,大了大了~~~")
else : print("嘿,小了小了~~~")
print()
print("游戏结束,不玩了^_^") 萌新1 发表于 2020-6-4 16:41
这样用户输入数字可以运行,输入汉字的话第一次会提醒“”抱歉输入不合法“再次输入汉字或者数字就报错
while not temp.isdigit():
print("抱歉输入不合法")
temp = input("请输入一个整数:")
下面那句temp = int(temp)要去掉,放到这个循环结束之后再int,
因为你输入中文的时候他会去执行这句,此时temp变成了Int类型,然后进入循环是回调用temp.isdigit(),
而isdigit是输入字符串的方法,Int是无法使用的。 jackz007 发表于 2020-6-4 16:43
感谢老哥,你这个更简单点哈哈,不过刚没注意到采纳另外一个老哥的了
页:
[1]