鱼C论坛

 找回密码
 立即注册
查看: 1142|回复: 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输出
--------我爱学习--------

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


while guess != number:
# 我们自己猜的数
    tem = input("猜猜这个数字")
    guess = int(tem)
    gueG = guess % 10
    gueS = guess % 100 // 10
    gueB = gueS // 100
    i = i + 1
    if (guess == number):
        break
    # 有几位数猜对
    else:
        if gueG in num and gueS in num and gueB in num:
            print("有三位数猜对,但是位置不对")
        else:
            if (gueG in num and gueS in num) or (gueS in num and gueB in num ) or \
                    (gueG in num and gueB in num) :
                print("有两位数猜对")
            else:
                if gueG in num or gueS in num or gueB in num:
                    print("有一位位数猜对")

print("nb猜中了")
print("你一共猜了", i, "次")
print("游戏结束不玩了")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-7 16:54:53 | 显示全部楼层
个位十位百位的计算:
numG = number % 10
numS = number %100//10
numB = numS // 100
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2020-5-7 17:03:17 | 显示全部楼层
这个又BUG但是不晓得bug在什么地方
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


还是不对好像与个十百没关系
我将随机数改为188输出
--------我爱学习--------
猜猜这个数字199
大了!!!
有三位数猜对,但是位置不对
你再猜猜这个数字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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


while guess != number:
# 我们自己猜的数
    tem = input("猜猜这个数字")
    guess = int(tem)
    gueG = guess % 10
    gueS = guess % 100 // 10
    gueB = gueS // 100
    i = i + 1
    if (guess == number):
        break
    # 有几位数猜对
    else:
        if gueG in num and gueS in num and gueB in num:
            print("有三位数猜对,但是位置不对")
        else:
            if (gueG in num and gueS in num) or (gueS in num and gueB in num ) or \
                    (gueG in num and gueB in num) :
                print("有两位数猜对")
            else:
                if gueG in num or gueS in num or gueB in num:
                    print("有一位位数猜对")

print("nb猜中了")
print("你一共猜了", i, "次")
print("游戏结束不玩了")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

你是想让它显示什么
把最终效果发过来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-7 17:13:16 | 显示全部楼层
十位好像不对吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-7 17:13:49 | 显示全部楼层
那个数组num要改成这样
num = [numG, numS, numB]
不然他显示出来的是文本
想知道小甲鱼最近在做啥?请访问 -> 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:

这里应该是电脑随机和个人猜的去对比,这里描述不对吧
                 
想知道小甲鱼最近在做啥?请访问 -> 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:

这里应该是电脑随 ...

同感
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-7 17:58:42 | 显示全部楼层
#-*-coding:gbk-*-
import random
number = random.randint(100 , 999)
# print('number = ' , number)
numG , numS , numB = number // 100 , (number % 100) // 10 , number % 10
i = 1
print("--------我爱学习--------")
while True:
    guess = int(input("猜猜这个数字 : "))
    if guess == number : 
        break
    else:
        gueG , gueS , gueB = guess // 100 , (guess % 100) // 10 , guess % 10
        d , e = [numG , numS , numB] , [gueG , gueS , gueB]
        for x in e :
            if x in d :
                if len(d) == 3 : print('正确的数字:' , x , end = '')
                else : print(' ,' , x , end = '')
                d . remove(x)
        if len(d) < 3 : print()
        print('有' , 3 - len(d) , '位数猜对')
        print()
        i += 1   
print("nb猜中了")
print("你一共猜了" , i , "次")
print("游戏结束不玩了")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

number = 188
i = 0
# 电脑随机的数字 个 十 百
numG = number//100
numS = (number-(number//100*100))//10
numB = (number-(number//10*10))
num = [numG, numS, numB]


while True:
    #正确的数字
    True_gue = []
    #询问
    tem = input("猜猜这个数字:")
    guess = int(tem)
    # 我们自己猜的数
    gueG = guess//100
    gueS = (guess-(guess//100*100))//10
    gueB = (guess-(guess//10*10))
    i += 1
    if (guess == number):
        print("nb猜中了")
        print("你一共猜了", i, "次")
        print("猜中了也没有奖励 ")
        print("游戏结束不玩了")
        break
    else:
        if (guess < number):
            print("小了!!!")
        else:
            print("大了!!!")
        if gueG == num[0]:
            True_gue.append('百位上的'+str(gueG))
        if gueS == num[1]:
            True_gue.append('十位上的'+str(gueS))
        if gueB == num[2]:
            True_gue.append('个位上的'+str(gueB))
        if len(True_gue) == 0:
            print('所有数位都猜错了!')
        else:
            for s in True_gue:
                print(s,end = ',')
            print('猜对了')

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-7 18:19:43 | 显示全部楼层
那个最佳答案简直bug百出
--------我爱学习--------
猜猜这个数字1
有两位数猜对
猜猜这个数字2
有两位数猜对
猜猜这个数字3
有两位数猜对
猜猜这个数字4
有两位数猜对
猜猜这个数字5
有三位数猜对,但是位置不对
猜猜这个数字555
有三位数猜对,但是位置不对
猜猜这个数字666
有一位位数猜对
猜猜这个数字6
有两位数猜对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-5-7 19:04:00 | 显示全部楼层
各位大佬牛逼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-27 05:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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