大大的拳头 发表于 2020-5-7 16:42:49

猜数字

随机三位数,猜后提示那位数猜对知道猜对为止,但是我我的程序总卡在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("游戏结束不玩了")

sunrise085 发表于 2020-5-7 16:54:53

个位十位百位的计算:
numG = number % 10
numS = number %100//10
numB = numS // 100

大大的拳头 发表于 2020-5-7 17:02:40

还是不对好像与个十百没关系
我将随机数改为188输出
--------我爱学习--------
猜猜这个数字199
大了!!!
有三位数猜对,但是位置不对
你再猜猜这个数字

大大的拳头 发表于 2020-5-7 17:03:17

这个又BUG但是不晓得bug在什么地方

大大的拳头 发表于 2020-5-7 17:03:55

sunrise085 发表于 2020-5-7 16:54
个位十位百位的计算:


还是不对好像与个十百没关系
我将随机数改为188输出
--------我爱学习--------
猜猜这个数字199
大了!!!
有三位数猜对,但是位置不对
你再猜猜这个数字

sunrise085 发表于 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=


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("游戏结束不玩了")

xiaosi4081 发表于 2020-5-7 17:11:58

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


你是想让它显示什么
把最终效果发过来

老兵hb 发表于 2020-5-7 17:13:16

十位好像不对吧

xiaosi4081 发表于 2020-5-7 17:13:49

那个数组num要改成这样
num =

不然他显示出来的是文本

老兵hb 发表于 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:

这里应该是电脑随机和个人猜的去对比,这里描述不对吧
               

xiaosi4081 发表于 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:

这里应该是电脑随 ...

同感

ouyunfu 发表于 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 =
    # 我们自己猜的数
    gueG = guess % 10
    gueS = guess % 100//10
    gueB = guess // 100
    gue =
    #
    if (guess == number):
      Flag=0
    else:
      if .count(True)==3:
            print("有三位数猜对,但是位置不对")
      if .count(True)==2:
            print("有两位数猜对")
      if .count(True)==1:
            print("有一位位数猜对")
      if .count(True)==0:
            print("没有数字猜对")
print("nb猜中了")
print("你一共猜了", i, "次")
print("游戏结束不玩了")

jackz007 发表于 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 = ,
      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("游戏结束不玩了")

WangJS 发表于 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 =


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:
            True_gue.append('百位上的'+str(gueG))
      if gueS == num:
            True_gue.append('十位上的'+str(gueS))
      if gueB == num:
            True_gue.append('个位上的'+str(gueB))
      if len(True_gue) == 0:
            print('所有数位都猜错了!')
      else:
            for s in True_gue:
                print(s,end = ',')
            print('猜对了')

沐羽尘 发表于 2020-5-7 18:19:43

那个最佳答案简直bug百出--------我爱学习--------
猜猜这个数字1
有两位数猜对
猜猜这个数字2
有两位数猜对
猜猜这个数字3
有两位数猜对
猜猜这个数字4
有两位数猜对
猜猜这个数字5
有三位数猜对,但是位置不对
猜猜这个数字555
有三位数猜对,但是位置不对
猜猜这个数字666
有一位位数猜对
猜猜这个数字6
有两位数猜对

大大的拳头 发表于 2020-5-7 19:04:00

{:10_257:}各位大佬牛逼
页: [1]
查看完整版本: 猜数字