鱼C论坛

 找回密码
 立即注册
查看: 3708|回复: 17

这题帮我看一下,是题目有问题,还是要怎么解决?

[复制链接]
发表于 2021-6-2 22:58:39 | 显示全部楼层 |阅读模式

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

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

x
#注释:以下为"随机生成一个1-20之间的正整数,用户猜一个数(输入)"的代码,请不要删除<1>和<2>以外的任何代码。
import random
t = random.randint(1,20)
#注释:删除<1>,在<1>处写上正确的代码
for i in range<1>:
    print('这是第' + str(i) + '次猜数字')
    a = input('请输入数字:')
    if a.isdigit():
        a = int(a)
        #注释:删除<2>,在<2>处写上正确的代码
        if <2>:
            print("请输入1—20之间的数")
            continue
        if a < t:
            print('您输入的数字太小了,请重新输入:')
        elif a > t:
            print('您输入的数字太大了,请重新输入:')
        elif a == t:
            print('恭喜您猜对了')
            break
    elif a == 'q':
        print('退出游戏!')
        break
    else:
        print('输入的内容必须为正整数,请重新输入:')



题目要求

8计算机随机生成一个1-20之间的整数,用户猜一个数(输入),程序反馈“大了”还是“小了”;用户重新输入一个数,程序循环反馈猜数情况,直到用户猜中,程序反馈“猜中了”,猜数结束。
请不要删除<1>和<2>以外的任何代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-6-2 23:00:48 | 显示全部楼层
我觉得使用While,但是他为什么要用for?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-3 07:41:16 From FishC Mobile | 显示全部楼层
新的开始123 发表于 2021-6-2 23:00
我觉得使用While,但是他为什么要用for?

for和while没太大的区别,一般情况下用哪个都可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-3 14:55:43 | 显示全部楼层
import random
t = random.randint(1,20)
#注释:删除<1>,在<1>处写上正确的代码
# 这里是猜数据的次数,答案不唯一,因为指定结果为1-20之间
# 所以一般状态设置 range(1,21)就足够了,但是考虑可能输入重复
# 再加上有可能测试不在 1-20之间的数据,所以设置一个较大数值
# 题目没有要求猜测的次数,所以直到猜中 break
# 数值设置较大不影响结果

for i in range(1,1000):
    print('这是第' + str(i) + '次猜数字')
    a = input('请输入数字:')
    if a.isdigit():
        a = int(a)
        #注释:删除<2>,在<2>处写上正确的代码
        # 这里是判断输入的数字是否在 1-20之间
        # 答案不唯一,因为题目明确是正整数,所以我采用的是这种方式
        # 当然可以用其他判断方式,例如:
        # if a < 1 or a > 20:
        # 等等
        
        if a not in range(1,21):
            print("请输入1—20之间的数")
            continue
        if a < t:
            print('您输入的数字太小了,请重新输入:')
        elif a > t:
            print('您输入的数字太大了,请重新输入:')
        elif a == t:
            print('恭喜您猜对了')
            break
    elif a == 'q':
        print('退出游戏!')
        break
    else:
        print('输入的内容必须为正整数,请重新输入:')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-3 15:05:52 | 显示全部楼层
新的开始123 发表于 2021-6-2 23:00
我觉得使用While,但是他为什么要用for?

你感觉使用 while 是正确的第一感应。
虽说 while 和 for 是可以通过一些手段相互转化,
但是 我们通常会很明确知道什么时候使用 while 什么时候使用 for
一般我们认为,在有明确循环体(如列表元组)、有明确循环次数(如只能猜5次)的循环应当首选 for
没有明确循环体和循环次数,但是有明确的循环条件(如输入q退出,直到猜中退出)的循环应当首选 while
不过本题要求只能改特定部位,所以也无所谓了。只需将循环次数设置较大就可以了
毕竟要求数字在 1-20 之间的正整数,最多20次,也算是有个次数要求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-3 16:41:08 | 显示全部楼层
wp231957 发表于 2021-6-3 07:41
for和while没太大的区别,一般情况下用哪个都可以

那么那两个填什么,我们老师说不会,他说题目有问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-3 16:44:22 | 显示全部楼层

这跟次数没关系吧,如果没猜对的话,他就是死循环,但是死循环用for 怎么写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-6-3 17:22:14 | 显示全部楼层
新的开始123 发表于 2021-6-3 16:44
这跟次数没关系吧,如果没猜对的话,他就是死循环,但是死循环用for 怎么写


你较这个真没什么意义,事实上,一般情况下不存在死循环,因为死循环基本就代表错误。
即使是 while True 也是会有 break 的
可是你问到了怎样用for写死循环那我也不妨简单讲一下,例如 将range内的数值设置无限大,
比如这个值等于10000**10000,我保证这个数据到死也循环不完,或者用列表也可以,因为列表是可变化的可迭代对象,你可以
data = [0, 1]
for i in data:
    print(i)
    data.append(2 + i)
相对于本题,既然要求输入数据在 1-20 的正整数,当然只有20个,每个数据猜一遍也猜出来了,所以即使想要多测试几组数据,设置大一点的数据也足够了,钻了牛角尖只会陷入死胡同
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-3 17:25:37 | 显示全部楼层
本帖最后由 qq1151985918 于 2021-6-3 17:27 编辑
新的开始123 发表于 2021-6-3 16:41
那么那两个填什么,我们老师说不会,他说题目有问题。


如果你们老师认为错误,那这个错误只在教学理念上,你完全可以把我的解释跟老师说。当然题目确实也不够严谨,如果严谨一些就不该用 continue
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-3 19:05:52 | 显示全部楼层
qq1151985918 发表于 2021-6-3 17:25
如果你们老师认为错误,那这个错误只在教学理念上,你完全可以把我的解释跟老师说。当然题目确实也不够 ...

所以这两个空格应该怎么填?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-3 19:09:31 | 显示全部楼层
qq1151985918 发表于 2021-6-3 15:05
你感觉使用 while 是正确的第一感应。
虽说 while 和 for 是可以通过一些手段相互转化,
但是 我们通常 ...

所以这两个空应该怎么填,使他在没有猜对的情况下,一直循环下去。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-3 19:17:48 From FishC Mobile | 显示全部楼层
新的开始123 发表于 2021-6-3 19:09
所以这两个空应该怎么填,使他在没有猜对的情况下,一直循环下去。

一百年前就贴了代码了看不到吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-4 17:48:20 | 显示全部楼层
qq1151985918 发表于 2021-6-3 19:17
一百年前就贴了代码了看不到吗?

主要按照你的方式还是没有得分。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-4 17:48:54 | 显示全部楼层
qq1151985918 发表于 2021-6-3 19:17
一百年前就贴了代码了看不到吗?

主要按照你的方式还是没有得分。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-4 17:49:48 | 显示全部楼层
qq1151985918 发表于 2021-6-3 19:17
一百年前就贴了代码了看不到吗?

主要按照你的方式还是没有得分。他显示没有找到主要的关键词。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-4 18:33:02 From FishC Mobile | 显示全部楼层
新的开始123 发表于 2021-6-4 17:49
主要按照你的方式还是没有得分。他显示没有找到主要的关键词。

如果是死读书死记硬背照搬照抄那是没有意义的。我全部都给你写了注释,已经告诉你了答案不唯一。即使是相同的题目,不同人也会写出不一样的代码,否则岂不是一模一样的结果了么。只要你自己知道是否正确就好了。既然你有老师,不妨去问一问,把我给你的代码和注释给你的老师看。你说的他显示没有发现关键字,应该是电脑阅卷吧?不要相信电脑阅卷,电脑只会对比答案,不会写代码。否则还要什么程序员。你要相信你自己,相信你的老师。多去跟你的老师问问吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-8 20:06:28 | 显示全部楼层
qq1151985918 发表于 2021-6-4 18:33
如果是死读书死记硬背照搬照抄那是没有意义的。我全部都给你写了注释,已经告诉你了答案不唯一。即使是相 ...

我们的计算机考试,就是电脑阅卷啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-8 20:10:36 | 显示全部楼层
qq1151985918 发表于 2021-6-4 18:33
如果是死读书死记硬背照搬照抄那是没有意义的。我全部都给你写了注释,已经告诉你了答案不唯一。即使是相 ...

没有找到关键词就不给分了,
如果让我写的话,我肯定使用for
今天刚好抽到这一道题,我按照你的方法填写,然后八分还是全扣掉。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 17:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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