海月清辉 发表于 2019-11-2 14:14:00

第三章3.8节 小游戏求优化

import random
a = random.randint (1,5)
b = int(input("pleas:"))
d = 1
if (b == a) :
    print("luck")
else:
    while (b != a) and (d <= 5):
      if b > a:
            print("big")
      else:
             print("small")
      b = int(input("again:"))
      d += 1   
    print("shagua")
   

求教各位大神,为什么b==a   不会执行打印 luck

Hoiste 发表于 2019-11-2 14:21:32

如果第一次输入没猜对,进入else条件下的while循环了,这时候再猜对了也不会退回到if条件下了,我这里有个自己练习时候的可以参考一下,循环和条件结构灵活运用可以解决很多的问题,不过编程过程中思路清晰才是最重要的:
import random
answer = random.randint(1,100)
print('------猜数字游戏------')
temp = input("猜一个1到100的数字,你一共有7次机会:")
while not temp.isdigit():
    print('输入不合法,请按要求输入一个1到100的整数。')
    temp = input('请输入一个1到100的数字:')
guess = int(temp)
i = 0
while guess != answer and i < 6:
    if guess > answer:
      print('大了')
    else:
      print('小了')
    i = i + 1
    j = 7 - i
    print('猜错了,你还剩余的机会是:'+str(j)+'次')
    temp = input("猜错了,再试试?:")
    while not temp.isdigit():
      print('输入不合法,请按要求输入一个1到100的整数。')
      temp = input('请输入一个1到100的数字:')
    guess = int(temp)
if guess != answer:
    print('游戏失败!'+'正确结果是:'+str(answer))
else:
    print('猜对了')
print("游戏结束")

jackz007 发表于 2019-11-2 14:48:22

      这个代码由于输入数据、判断正确以及输出信息语句的不统一,导致只有在第一次输入正确的情况下,才会有机会显示出信息 "luck"。这就是这个代码的最大问题。

      我按你的意思做了修改,你可以测试:
import random
a = random . randint(1 , 5)
d = 5
p = "please : "
while d:
    b = int(input(p))
    d -= 1
    if b == a :
      print("luck")
      break
    else:
      if d:
            if b > a:
                print("big")
            else:
                print("small")
            p = "again : "
      else:
            print("shagua")

海月清辉 发表于 2019-11-2 15:05:16

jackz007 发表于 2019-11-2 14:48
这个代码由于输入数据、判断正确以及输出信息语句的不统一,导致只有在第一次输入正确的情况下,才会 ...

我有反应过来了    你实现了我想要的功能呢谢谢!

海月清辉 发表于 2019-11-2 15:16:31

Hoiste 发表于 2019-11-2 14:21
如果第一次输入没猜对,进入else条件下的while循环了,这时候再猜对了也不会退回到if条件下了,我这里有个 ...

不好意思第一次没有看懂你也是大神来着呀

海月清辉 发表于 2019-11-3 02:06:36

Hoiste 发表于 2019-11-2 14:21
如果第一次输入没猜对,进入else条件下的while循环了,这时候再猜对了也不会退回到if条件下了,我这里有个 ...

import random
a = random.randint(1,5)
b = 1
c = int(input("pleas:"))
while b < 3:
    if c == a:
      print("luck")
      break
    else:
      if c > a:
            print("big")
      else:
            print("small")
    c = int(input("again:"))
    b += 1
else:
    print("shagua")



请问大神   如果我想知道第三次错误 然后再输出结果怎么修改??
列如:
please:3
small
again:2
small
again:1
small   #我想显示第三次的结果
shagua

海月清辉 发表于 2019-11-3 02:08:43

jackz007 发表于 2019-11-2 14:48
这个代码由于输入数据、判断正确以及输出信息语句的不统一,导致只有在第一次输入正确的情况下,才会 ...

import random
a = random.randint(1,5)
b = 1
c = int(input("pleas:"))
while b < 3:
    if c == a:
      print("luck")
      break
    else:
      if c > a:
            print("big")
      else:
            print("small")
    c = int(input("again:"))
    b += 1
else:
    print("shagua")



请问大神   如果我想知道第三次错误 然后再输出结果怎么修改??
列如:
please:3
small
again:2
small
again:1
small   #我想显示第三次的结果
shagua

Hoiste 发表于 2019-11-3 09:38:22

海月清辉 发表于 2019-11-3 02:08
import random
a = random.randint(1,5)
b = 1


你的猜数字游戏正确结果给到了a,所以你的打印:print('shagua')改成print('shagua,正确结果是:’+str(a))
比较方便,如果要在第三次输入错误后显示大了或小了的地方再打印正确结果代码调整比较大。

python万 发表于 2019-11-3 14:59:57

小甲鱼的小游戏
页: [1]
查看完整版本: 第三章3.8节 小游戏求优化