papapalongtime 发表于 2020-10-3 21:33:16

关于isinstance返回值的使用方法求助

求大佬指出我的错误再哪里头疼啊

import random
secret = random.randint(1,10)
guess = int(input("猜一下我心里面想的数字吧:"))
while isinstance(guess,int):
    while guess != secret:
      guess = int(input("猜错了,重新猜:"))
      if guess == secret:
            print("哦操 你是我的蛔虫的吗")
            print("猜中了也没有奖励")
      else:
            if guess > secret :
                print("嘿,大了,大了")
            else:
                print("哥,小了 小了")
      print("游戏结束,不玩了^-^")
print("输入有误")

kylin121380 发表于 2020-10-3 21:46:53

本帖最后由 kylin121380 于 2020-10-3 21:50 编辑

你while条件永远为真,猜中了也没有跳出循环,如果猜错了,直接再次输入,没有提示大了还是小了,最后两句print提示有问题
import random
secret = random.randint(1,10)
try:
    guess = int(input("猜一下我心里面想的数字吧:"))
    while guess != secret:
      if guess > secret:
            print("嘿,大了,大了")
      else:
            print("哥,小了 小了")
      guess = int(input("猜错了,重新猜:"))
    print("哦操 你是我的蛔虫的吗")
    print("猜中了也没有奖励")
    print("游戏结束,不玩了^-^")
except:
    print('请输入整型数!')

疾风怪盗 发表于 2020-10-3 21:50:16

这里不药用isinstance了,int强制转换字符串失败时会报错,还是用isdigit这样,然后下面再调整下顺序和逻辑
import random
secret = random.randint(1,10)
print(secret)
guess = input("猜一下我心里面想的数字吧:")
while guess.isdigit():
    guess=int(guess)
    if guess != secret:
      if guess > secret :
            print("嘿,大了,大了")
      else:
            print("哥,小了 小了")
      guess = input("猜错了,重新猜:")
    else:
      print("哦操 你是我的蛔虫的吗")
      print("猜中了也没有奖励")
      print("游戏结束,不玩了^-^")
      break
else:
    print("输入有误")

昨非 发表于 2020-10-3 21:52:52

import random

secret = random.randint(1,10)
guess = int(input("猜一下我心里面想的数字吧:"))
while isinstance(guess,int): #判断是否转换为整型(没啥意义,因为如果不是整型,上一行就会报错)
    while guess != secret: #猜错的情况
      guess = int(input("猜错了,重新猜:"))
      if guess == secret:
            print("哦操 你是我的蛔虫的吗")
            print("猜中了也没有奖励")   
            print("游戏结束,不玩了^-^")
      else:
            if guess > secret :
                print("嘿,大了,大了")
            else:
                print("哥,小了 小了")
    else: #猜对的情况 [你这里缺少]
      print("哦操 你是我的蛔虫的吗")
      print("猜中了也没有奖励")
      print("游戏结束,不玩了^-^")
      break         
else:
    print("输入有误") #如果没有进入循环,则打印输入错误

疾风怪盗 发表于 2020-10-3 21:55:55

昨非 发表于 2020-10-3 21:52


你这也有问题的,非数字会报错,而且猜对了后输出两次“猜中了”

昨非 发表于 2020-10-3 21:58:24

疾风怪盗 发表于 2020-10-3 21:55
你这也有问题的,非数字会报错,而且猜对了后输出两次“猜中了”

确实

happy含笑 发表于 2020-10-4 08:57:23

页: [1]
查看完整版本: 关于isinstance返回值的使用方法求助