fish鳞陨 发表于 2022-8-11 01:04:55

课后作业第四讲设置3次输入机会的代码可以这样改吗?

file:///C:/Users/29613/Desktop/%E6%8D%95%E8%8E%B7.PNG
我不太明白guess和end的设置,所以按我自己的理解修改了一下,有人可以帮我看看这样修改是可以的嘛?

fish鳞陨 发表于 2022-8-11 01:07:53

这是老师的:
import random
times = 3
secret = random.randint(1,10)
print('----------小甲鱼工作室-----------')
guess = 0
print("不妨猜一下小甲鱼现在想的是哪一个数字:",end="")
while (guess != secret) and (times > 0):
    temp = input()
    guess = int(temp)
    times = times - 1
    if guess == secret:
            print("你是小甲鱼肚子里的蛔虫吗?!")
            print("哼,猜中了也没有奖励")
    else:
      if guess > secret:
            print("猜大啦")
      else:
            print("猜小啦")
      if times > 0:
            print("再试一次吧:",end = "")
      else:
            print("机会用光啦")
      
print("游戏结束,不玩啦!")
这是我的:
import random
times = 3
secret = random.randint(1,10)
print('----------小甲鱼工作室-----------')
temp = input("不妨猜一下小甲鱼现在想的是哪一个数字:")#让用户随机输入一个数
guess = int(temp)
while (guess != secret) and (times>1):
    temp = input("猜错了请重新输入吧:")
    guess = int(temp)#如果把变量guess放在前面
    times = times - 1
    if guess == secret:
            print("你是小甲鱼肚子里的蛔虫吗?!")
            print("哼,猜中了也没有奖励")
    else:
      if guess > secret:
            print("猜大啦")
      else:
            print("猜小啦")
      if times > 0:
            print("再试一次吧:",end = "")
      else:
            print("机会用光啦")
      
print("游戏结束,不玩啦!")
麻烦了!

临时号 发表于 2022-8-11 01:32:25

fish鳞陨 发表于 2022-8-11 01:07
这是老师的:
import random
times = 3


给你的代码稍微调了一下顺序
import random
times = 3
secret = random.randint(1,10)
print('----------小甲鱼工作室-----------')
temp = input("不妨猜一下小甲鱼现在想的是哪一个数字:")#让用户随机输入一个数
guess = int(temp)
times = times - 1
while (guess != secret) and (times>0):
    if guess == secret:
            print("你是小甲鱼肚子里的蛔虫吗?!")
            print("哼,猜中了也没有奖励")
    else:
      if guess > secret:
            print("猜大啦")
      else:
            print("猜小啦")
    temp = input("再试一次吧:")
    guess = int(temp)#如果把变量guess放在前面
    times = times - 1
    if times <= 0:
      print("机会用光啦")
      
print("游戏结束,不玩啦!")

jackz007 发表于 2022-8-11 10:32:50

本帖最后由 jackz007 于 2022-8-11 10:41 编辑

      print() 加了 end = "" 选项后,完成打印后不会回车换行,考察下面的代码区别及对应的效果差异
【代码-1】:
print('ABC')
print('DEF')
print('GHI')
【效果-1】:
ABC
DEF
GHI
【代码-2】:
print('ABC' , end = '')
print('DEF' , end = '')
print('GHI')
【效果-2】:
ABCDEFGHI
      

wyh551202 发表于 2022-8-11 10:59:05

跟小甲鱼所说代码相对比多一次input输入,所以修改下第二次input输入位置,跑出效果与小甲鱼基本一致
你的
import random
times = 3
secret = random.randint(1,10)
print('----------小甲鱼工作室-----------')
temp = input("不妨猜一下小甲鱼现在想的是哪一个数字:")#多一次input输入
guess = int(temp)
while (guess != secret) and (times>1):
    temp = input("猜错了请重新输入吧:")
    guess = int(temp)#如果把变量guess放在前面
    times = times - 1
    if guess == secret:
            print("你是小甲鱼肚子里的蛔虫吗?!")
            print("哼,猜中了也没有奖励")
    else:
      if guess > secret:
            print("猜大啦")
      else:
            print("猜小啦")
      if times > 0:
            print("再试一次吧:",end = "")
      else:
            print("机会用光啦")
      
print("游戏结束,不玩啦!")


修改后
import random
times = 3
secret = random.randint(1,10)
print('----------小甲鱼工作室-----------')
temp = input("不妨猜一下小甲鱼现在想的是哪一个数字:")#让用户随机输入一个数
guess = int(temp)
while (guess != secret) and (times>1):
   
    guess = int(temp)#如果把变量guess放在前面
    times = times - 1
    if guess == secret:
            print("你是小甲鱼肚子里的蛔虫吗?!")
            print("哼,猜中了也没有奖励")
    else:
      if guess > secret:
            print("猜大啦")
         
      else:
            print("猜小啦")
         
      temp = input("猜错了请重新输入吧:")#改变输入位置
      if times > 0:
            print("再试一次吧:",end = "")
      else:
            print("机会用光啦")
      
print("游戏结束,不玩啦!")


你可以试试

一点点儿 发表于 2022-8-11 14:03:22

本帖最后由 一点点儿 于 2022-8-11 14:19 编辑

这样修改的话有一些问题:

1.如果第一次就猜对不会打印 "你是小甲鱼肚子里的蛔虫吗?!"   "哼,猜中了也没有奖励"

修改方案:在while循环后加上
if guess == secret:
            print("你是小甲鱼肚子里的蛔虫吗?!")
            print("哼,猜中了也没有奖励")

2.源代码这里
if times > 0:
            print("再试一次吧:",end = "")
      else:
            print("机会用光啦")
判断条件应为 times > 1




3.第一次猜错不会提示猜大了还是猜小了,这里建议参考老师的代码







前2个问题修改后的代码如下:
import random
times = 3
secret = random.randint(1,10)
print('----------小甲鱼工作室-----------')
temp = input("不妨猜一下小甲鱼现在想的是哪一个数字:")#让用户随机输入一个数
guess = int(temp)
while (guess != secret) and (times>1):
    temp = input("猜错了请重新输入吧:")
    guess = int(temp)#如果把变量guess放在前面
    times = times - 1
    if guess == secret:
            print("你是小甲鱼肚子里的蛔虫吗?!")
            print("哼,猜中了也没有奖励")
    else:
      if guess > secret:
            print("猜大啦")
      else:
            print("猜小啦")
      if times > 1:
            print("再试一次吧:",end = "")
      else:
            print("机会用光啦")
if times == 3:
            print("你是小甲鱼肚子里的蛔虫吗?!")
            print("哼,猜中了也没有奖励")
            
print("游戏结束,不玩啦!")

fish鳞陨 发表于 2022-8-11 14:36:40

jackz007 发表于 2022-8-11 10:32
print() 加了 end = "" 选项后,完成打印后不会回车换行,考察下面的代码区别及对应的效果差异
【 ...

好详细!现在明白了 非常感谢

fish鳞陨 发表于 2022-8-11 14:47:59

一点点儿 发表于 2022-8-11 14:03
这样修改的话有一些问题:

1.如果第一次就猜对不会打印 "你是小甲鱼肚子里的蛔虫吗?!"   "哼,猜中了 ...

重新跑了下确实出现了你说的情况,修改后就正常啦 非常感谢{:9_228:}

fish鳞陨 发表于 2022-8-11 14:54:20

临时号 发表于 2022-8-11 01:32
给你的代码稍微调了一下顺序

我有一个问题想问您一下,就是while后是猜不对的情况,但是下面一句又是guess==secret,那如果一开始while后的条件不成立,是会直接跳过这个循环来到if这里吗?(不知道这么说能不能把我的疑问点讲明白orz)

临时号 发表于 2022-8-11 15:27:08

fish鳞陨 发表于 2022-8-11 14:54
我有一个问题想问您一下,就是while后是猜不对的情况,但是下面一句又是guess==secret,那如果一开始whil ...

会直接说游戏结束,不玩啦,不好意思,没考虑到这种情况
页: [1]
查看完整版本: 课后作业第四讲设置3次输入机会的代码可以这样改吗?