新的开始123 发表于 2021-6-2 22:58:39

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

#注释:以下为"随机生成一个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>以外的任何代码

新的开始123 发表于 2021-6-2 23:00:48

我觉得使用While,但是他为什么要用for?

wp231957 发表于 2021-6-3 07:41:16

新的开始123 发表于 2021-6-2 23:00
我觉得使用While,但是他为什么要用for?

for和while没太大的区别,一般情况下用哪个都可以

qq1151985918 发表于 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('输入的内容必须为正整数,请重新输入:')

qq1151985918 发表于 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次,也算是有个次数要求

新的开始123 发表于 2021-6-3 16:41:08

wp231957 发表于 2021-6-3 07:41
for和while没太大的区别,一般情况下用哪个都可以

那么那两个填什么,我们老师说不会,他说题目有问题。

新的开始123 发表于 2021-6-3 16:44:22

qq1151985918 发表于 2021-6-3 14:55


这跟次数没关系吧,如果没猜对的话,他就是死循环,但是死循环用for 怎么写

qq1151985918 发表于 2021-6-3 17:22:14

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

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

qq1151985918 发表于 2021-6-3 17:25:37

本帖最后由 qq1151985918 于 2021-6-3 17:27 编辑

新的开始123 发表于 2021-6-3 16:41
那么那两个填什么,我们老师说不会,他说题目有问题。

如果你们老师认为错误,那这个错误只在教学理念上,你完全可以把我的解释跟老师说。当然题目确实也不够严谨,如果严谨一些就不该用 continue

新的开始123 发表于 2021-6-3 19:05:52

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

所以这两个空格应该怎么填?

新的开始123 发表于 2021-6-3 19:09:31

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

所以这两个空应该怎么填,使他在没有猜对的情况下,一直循环下去。

qq1151985918 发表于 2021-6-3 19:17:48

新的开始123 发表于 2021-6-3 19:09
所以这两个空应该怎么填,使他在没有猜对的情况下,一直循环下去。

一百年前就贴了代码了看不到吗?

新的开始123 发表于 2021-6-4 17:48:20

qq1151985918 发表于 2021-6-3 19:17
一百年前就贴了代码了看不到吗?

主要按照你的方式还是没有得分。

新的开始123 发表于 2021-6-4 17:48:54

qq1151985918 发表于 2021-6-3 19:17
一百年前就贴了代码了看不到吗?

主要按照你的方式还是没有得分。

新的开始123 发表于 2021-6-4 17:49:48

qq1151985918 发表于 2021-6-3 19:17
一百年前就贴了代码了看不到吗?

主要按照你的方式还是没有得分。他显示没有找到主要的关键词。

qq1151985918 发表于 2021-6-4 18:33:02

新的开始123 发表于 2021-6-4 17:49
主要按照你的方式还是没有得分。他显示没有找到主要的关键词。

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

新的开始123 发表于 2021-6-8 20:06:28

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

我们的计算机考试,就是电脑阅卷啊。

新的开始123 发表于 2021-6-8 20:10:36

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

没有找到关键词就不给分了,
如果让我写的话,我肯定使用for
今天刚好抽到这一道题,我按照你的方法填写,然后八分还是全扣掉。
页: [1]
查看完整版本: 这题帮我看一下,是题目有问题,还是要怎么解决?