鱼C论坛

 找回密码
 立即注册
查看: 2522|回复: 9

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

[复制链接]
发表于 2022-8-11 01:04:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
file:///C:/Users/29613/Desktop/%E6%8D%95%E8%8E%B7.PNG
我不太明白guess和end的设置,所以按我自己的理解修改了一下,有人可以帮我看看这样修改是可以的嘛?
最佳答案
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("游戏结束,不玩啦!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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("游戏结束,不玩啦!")
麻烦了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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("游戏结束,不玩啦!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

发表于 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("游戏结束,不玩啦!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

好详细!现在明白了 非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-11 14:47:59 | 显示全部楼层
一点点儿 发表于 2022-8-11 14:03
这样修改的话有一些问题:

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

重新跑了下确实出现了你说的情况,修改后就正常啦 非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-11 14:54:20 | 显示全部楼层
临时号 发表于 2022-8-11 01:32
给你的代码稍微调了一下顺序

我有一个问题想问您一下,就是while后是猜不对的情况,但是下面一句又是guess==secret,那如果一开始while后的条件不成立,是会直接跳过这个循环来到if这里吗?(不知道这么说能不能把我的疑问点讲明白orz)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

会直接说游戏结束,不玩啦,不好意思,没考虑到这种情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 04:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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