非驰 发表于 2020-3-3 23:58:42

请问有没有更好的写法,004猜数字游戏

我想让正确答案没有出现的时候,一直循环,这个我的写法,有没有更简单的答案!!
import random
daan = random.randint(8,8)
guess = 0
cishu = 3
print('猜猜我心里想的什么数:',end ="")
while (guess != daan) and (cishu > 0):
    temp = input()
    guess =int(temp)
    if guess == daan:
      print('我日,你竟然猜对了')
    else:
      if cishu > 0:
            print("再试一次吧:",end="")
      else:
            print()
print('游戏结束!!')   

yexing 发表于 2020-3-4 00:05:13

一直循环,去掉次数即可
import random
daan = random.randint(8,8) #这里有点奇怪啊,为了遵循你的思路我没改,不过这个应该是(1, 10)吧?
guess = 0
print('猜猜我心里想的什么数:',end ="")
while guess != daan:
      temp = input()
      guess =int(temp)
      if guess == daan:
            print('我日,你竟然猜对了')
      else:
            print("再试一次吧:",end="")
print('游戏结束!!')   

jackz007 发表于 2020-3-4 00:25:51

import random
daan = random . randint(8 , 8)
cishu = 3
while cishu :
    guess = int(input('猜猜我心里想的什么数:'))
    cishu -= 1
    if guess == daan:
      print('我日,你竟然猜对了')
      break
    else:
      if cishu:
            print('猜错了,再试一次吧!\n')
else:
    print('很遗憾,机会用完了!')
print('游戏结束!!')

yexing 发表于 2020-3-4 10:50:17

本帖最后由 yexing 于 2020-3-4 10:58 编辑

qiuyouzhi 发表于 2020-3-4 08:39
疯狂压缩:

你这个程序有bug啊... guess 和 cishu 没初始化{:10_277:}
from random import randint
daan = random.randint(8,8) #应该是直接randint()
print("猜猜我心里想的什么数: ", end = "")
while guess != daan: #guess is not defined
    guess = int(input())
    if guess == daan:
      print('我日,你竟然猜对了')
    elif cishu > 0: #cishu is not defined
      print("再试一次吧:",end="")
    else:
      print("小了!")
print("游戏结束!!")

真要压缩还是得这样压{:10_297:}
from random import randint
daan, guess, cishu = randint(8,8), 0, 3 #randint()里的参数有点迷
print("猜猜我心里想的什么数: ", end = "")
while (guess != daan) and (cishu > 0):
    guess = int(input())
    if guess == daan:
      print('我日,你竟然猜对了\n游戏结束!!')
    else:
      cishu -= 1
      print("机会用完了\n游戏结束!!") if cishu <= 0 else print("再试一次吧:", end="")

qiuyouzhi 发表于 2020-3-4 11:09:24

yexing 发表于 2020-3-4 10:50
你这个程序有bug啊... guess 和 cishu 没初始化

真要压缩还是得这样压

我去没看见
等下

非驰 发表于 2020-3-4 13:58:22

yexing 发表于 2020-3-4 00:05
一直循环,去掉次数即可

其实我就想让答案为一个固定数8,但是不会写固定数为的代码8,所以用的(8,8),没用(1,10),请问还能写一个,答案是8,不是的话,就一直循环的代码吗?

非驰 发表于 2020-3-4 14:14:13

jackz007 发表于 2020-3-4 00:25


大师竟然用到了,小菜没学到的break

jackz007 发表于 2020-3-4 14:18:17

非驰 发表于 2020-3-4 14:14
大师竟然用到了,小菜没学到的break

      break、continue 与 for、while 循环是密不可分的基本概念。
      break 用于从循环中退出,到循环语句块外的下一条语句处继续执行;continue 用于结束一次循环,直接开始下一次循环。

yexing 发表于 2020-3-4 14:19:40

本帖最后由 yexing 于 2020-3-4 14:21 编辑

非驰 发表于 2020-3-4 13:58
其实我就想让答案为一个固定数8,但是不会写固定数为的代码8,所以用的(8,8),没用(1,10),请问还 ...

你这个要求十分简单啊,要固定数直接赋值就行,不用搞randint,randint是输出随机数用的
答案不是8一直循环的话,可以像我这么写:
answer = 8
guess = 0
print("猜猜我心里想的是什么数:", end="")
while guess != answer:
    guess = int(input())
    if guess == answer:
      print("我日,你竟然猜对了")
    else:
      print("再试一次吧:", end="")

非驰 发表于 2020-3-4 14:45:26

yexing 发表于 2020-3-4 14:19
你这个要求十分简单啊,要固定数直接赋值就行,不用搞randint,randint是输出随机数用的
答案不是8一 ...

Thank you,Thank you!!{:5_110:}

非驰 发表于 2020-3-4 14:49:55

jackz007 发表于 2020-3-4 14:18
break、continue 与 for、while 循环是密不可分的基本概念。
      break 用于从循环中退出 ...

谢谢,谢谢,学习了,最佳答案只能选一个,如果能选两个,我必选大师这个,再次感谢!

一个账号 发表于 2021-1-7 21:24:03

非驰 发表于 2020-3-4 14:45
Thank you,Thank you!!

最简:

answer, guess = "8", "0"
while guess != answer:
    print("我日,你竟然猜对了" if (guess := input("猜猜我心里想的是什么数:")) == answer else "再试一次吧!")
页: [1]
查看完整版本: 请问有没有更好的写法,004猜数字游戏