鱼C论坛

 找回密码
 立即注册
查看: 1460|回复: 15

[已解决]猜数字

[复制链接]
发表于 2020-5-7 16:42:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
随机三位数,猜后提示那位数猜对知道猜对为止,但是我我的程序总卡在print("有两位...这里无论输入什么数字都是有两位i数字猜对
import random
number = random.randint(100, 999)
print("--------我爱学习--------")
tem = input("猜猜这个数字")
guess = int(tem)
i = 1
# 电脑随机的数字 个 十 百
numG = number % 10
numS = number // 10
numB = numS // 10
num = ["numG", "numS", "numB"]
# 我们自己猜的数
gueG = guess % 10
gueS = guess // 10
gueB = gueS // 10
#
while guess != number:
    i = i + 1
    if (guess == number):
        break
    # 有几位数猜对
    else:
        if "gueG"and "gueS" and "gueB" in num:
            print("有三位数猜对,但是位置不对")
            break
        else:
            if ("gueG"and "gueS") or ("gueS" and "gueB") or \
                    ("gueG"and "gueB") in num:
                print("有两位数猜对")
                break
            else:
                if "gueG"or "gueS" or "gueB" in num:
                    print("有一位位数猜对")
                    break
print("nb猜中了")
print("你一共猜了", i, "次")
print("游戏结束不玩了")
最佳答案
2020-5-7 17:10:32
大大的拳头 发表于 2020-5-7 17:02
还是不对好像与个十百没关系
我将随机数改为188输出
--------我爱学习--------

捏的程序问题太多了,帮你修改了一下
  1. import random
  2. number = random.randint(100, 999)
  3. print("--------我爱学习--------")
  4. guess = 0
  5. i = 0
  6. # 电脑随机的数字 个 十 百
  7. numG = number % 10
  8. numS = number % 100 // 10
  9. numB = numS // 100
  10. num=[numG,numS,numB]


  11. while guess != number:
  12. # 我们自己猜的数
  13.     tem = input("猜猜这个数字")
  14.     guess = int(tem)
  15.     gueG = guess % 10
  16.     gueS = guess % 100 // 10
  17.     gueB = gueS // 100
  18.     i = i + 1
  19.     if (guess == number):
  20.         break
  21.     # 有几位数猜对
  22.     else:
  23.         if gueG in num and gueS in num and gueB in num:
  24.             print("有三位数猜对,但是位置不对")
  25.         else:
  26.             if (gueG in num and gueS in num) or (gueS in num and gueB in num ) or \
  27.                     (gueG in num and gueB in num) :
  28.                 print("有两位数猜对")
  29.             else:
  30.                 if gueG in num or gueS in num or gueB in num:
  31.                     print("有一位位数猜对")

  32. print("nb猜中了")
  33. print("你一共猜了", i, "次")
  34. print("游戏结束不玩了")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-7 16:54:53 | 显示全部楼层
个位十位百位的计算:
  1. numG = number % 10
  2. numS = number %100//10
  3. numB = numS // 100
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-7 17:02:40 | 显示全部楼层
还是不对好像与个十百没关系
我将随机数改为188输出
--------我爱学习--------
猜猜这个数字199
大了!!!
有三位数猜对,但是位置不对
你再猜猜这个数字
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-7 17:03:17 | 显示全部楼层
这个又BUG但是不晓得bug在什么地方
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-7 17:03:55 | 显示全部楼层
sunrise085 发表于 2020-5-7 16:54
个位十位百位的计算:


还是不对好像与个十百没关系
我将随机数改为188输出
--------我爱学习--------
猜猜这个数字199
大了!!!
有三位数猜对,但是位置不对
你再猜猜这个数字
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-7 17:10:32 | 显示全部楼层    本楼为最佳答案   
大大的拳头 发表于 2020-5-7 17:02
还是不对好像与个十百没关系
我将随机数改为188输出
--------我爱学习--------

捏的程序问题太多了,帮你修改了一下
  1. import random
  2. number = random.randint(100, 999)
  3. print("--------我爱学习--------")
  4. guess = 0
  5. i = 0
  6. # 电脑随机的数字 个 十 百
  7. numG = number % 10
  8. numS = number % 100 // 10
  9. numB = numS // 100
  10. num=[numG,numS,numB]


  11. while guess != number:
  12. # 我们自己猜的数
  13.     tem = input("猜猜这个数字")
  14.     guess = int(tem)
  15.     gueG = guess % 10
  16.     gueS = guess % 100 // 10
  17.     gueB = gueS // 100
  18.     i = i + 1
  19.     if (guess == number):
  20.         break
  21.     # 有几位数猜对
  22.     else:
  23.         if gueG in num and gueS in num and gueB in num:
  24.             print("有三位数猜对,但是位置不对")
  25.         else:
  26.             if (gueG in num and gueS in num) or (gueS in num and gueB in num ) or \
  27.                     (gueG in num and gueB in num) :
  28.                 print("有两位数猜对")
  29.             else:
  30.                 if gueG in num or gueS in num or gueB in num:
  31.                     print("有一位位数猜对")

  32. print("nb猜中了")
  33. print("你一共猜了", i, "次")
  34. print("游戏结束不玩了")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-7 17:11:58 | 显示全部楼层
大大的拳头 发表于 2020-5-7 17:03
还是不对好像与个十百没关系
我将随机数改为188输出
--------我爱学习--------

你是想让它显示什么
把最终效果发过来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-7 17:13:16 | 显示全部楼层
十位好像不对吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-7 17:13:49 | 显示全部楼层
那个数组num要改成这样
  1. num = [numG, numS, numB]
复制代码

不然他显示出来的是文本
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-7 17:23:01 | 显示全部楼层
本帖最后由 老兵hb 于 2020-5-7 17:24 编辑



if ("gueG"and "gueS") or ("gueS" and "gueB") or  ("gueG"and "gueB") in num:

这里应该是电脑随机和个人猜的去对比,这里描述不对吧
                 
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-7 17:31:13 | 显示全部楼层
老兵hb 发表于 2020-5-7 17:23
if ("gueG"and "gueS") or ("gueS" and "gueB") or  ("gueG"and "gueB") in num:

这里应该是电脑随 ...

同感
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-7 17:52:26 | 显示全部楼层
你代码的问题太多了,我重新优化了一下
  1. import random
  2. number = random.randint(100, 999)
  3. print("--------我爱学习--------")
  4. Flag=1
  5. i = 0
  6. while Flag:
  7.     tem = input("猜猜这个数字")
  8.     guess = int(tem)
  9.     i+=1
  10.     # 电脑随机的数字 个 十 百
  11.     numG = number % 10
  12.     numS = number % 100//10
  13.     numB = number // 100
  14.     num = [numG, numS, numB]
  15.     # 我们自己猜的数
  16.     gueG = guess % 10
  17.     gueS = guess % 100//10
  18.     gueB = guess // 100
  19.     gue = [gueG, gueS, gueB]
  20.     #
  21.     if (guess == number):
  22.         Flag=0
  23.     else:
  24.         if [i in num for i in gue].count(True)==3:
  25.             print("有三位数猜对,但是位置不对")
  26.         if [i in num for i in gue].count(True)==2:
  27.             print("有两位数猜对")
  28.         if [i in num for i in gue].count(True)==1:
  29.             print("有一位位数猜对")
  30.         if [i in num for i in gue].count(True)==0:
  31.             print("没有数字猜对")
  32. print("nb猜中了")
  33. print("你一共猜了", i, "次")
  34. print("游戏结束不玩了")
复制代码

评分

参与人数 1鱼币 +2 收起 理由
大大的拳头 + 2 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-7 17:58:42 | 显示全部楼层
  1. #-*-coding:gbk-*-
  2. import random
  3. number = random.randint(100 , 999)
  4. # print('number = ' , number)
  5. numG , numS , numB = number // 100 , (number % 100) // 10 , number % 10
  6. i = 1
  7. print("--------我爱学习--------")
  8. while True:
  9.     guess = int(input("猜猜这个数字 : "))
  10.     if guess == number :
  11.         break
  12.     else:
  13.         gueG , gueS , gueB = guess // 100 , (guess % 100) // 10 , guess % 10
  14.         d , e = [numG , numS , numB] , [gueG , gueS , gueB]
  15.         for x in e :
  16.             if x in d :
  17.                 if len(d) == 3 : print('正确的数字:' , x , end = '')
  18.                 else : print(' ,' , x , end = '')
  19.                 d . remove(x)
  20.         if len(d) < 3 : print()
  21.         print('有' , 3 - len(d) , '位数猜对')
  22.         print()
  23.         i += 1   
  24. print("nb猜中了")
  25. print("你一共猜了" , i , "次")
  26. print("游戏结束不玩了")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-7 18:16:42 | 显示全部楼层
根据你在QQ上改的题,我写的代码:
  1. print("--------我爱学习--------")

  2. number = 188
  3. i = 0
  4. # 电脑随机的数字 个 十 百
  5. numG = number//100
  6. numS = (number-(number//100*100))//10
  7. numB = (number-(number//10*10))
  8. num = [numG, numS, numB]


  9. while True:
  10.     #正确的数字
  11.     True_gue = []
  12.     #询问
  13.     tem = input("猜猜这个数字:")
  14.     guess = int(tem)
  15.     # 我们自己猜的数
  16.     gueG = guess//100
  17.     gueS = (guess-(guess//100*100))//10
  18.     gueB = (guess-(guess//10*10))
  19.     i += 1
  20.     if (guess == number):
  21.         print("nb猜中了")
  22.         print("你一共猜了", i, "次")
  23.         print("猜中了也没有奖励 ")
  24.         print("游戏结束不玩了")
  25.         break
  26.     else:
  27.         if (guess < number):
  28.             print("小了!!!")
  29.         else:
  30.             print("大了!!!")
  31.         if gueG == num[0]:
  32.             True_gue.append('百位上的'+str(gueG))
  33.         if gueS == num[1]:
  34.             True_gue.append('十位上的'+str(gueS))
  35.         if gueB == num[2]:
  36.             True_gue.append('个位上的'+str(gueB))
  37.         if len(True_gue) == 0:
  38.             print('所有数位都猜错了!')
  39.         else:
  40.             for s in True_gue:
  41.                 print(s,end = ',')
  42.             print('猜对了')
复制代码

评分

参与人数 1鱼币 +2 收起 理由
大大的拳头 + 2

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-7 18:19:43 | 显示全部楼层
那个最佳答案简直bug百出
  1. --------我爱学习--------
  2. 猜猜这个数字1
  3. 有两位数猜对
  4. 猜猜这个数字2
  5. 有两位数猜对
  6. 猜猜这个数字3
  7. 有两位数猜对
  8. 猜猜这个数字4
  9. 有两位数猜对
  10. 猜猜这个数字5
  11. 有三位数猜对,但是位置不对
  12. 猜猜这个数字555
  13. 有三位数猜对,但是位置不对
  14. 猜猜这个数字666
  15. 有一位位数猜对
  16. 猜猜这个数字6
  17. 有两位数猜对
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-5-7 19:04:00 | 显示全部楼层
各位大佬牛逼
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-18 22:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表