这题帮我看一下,是题目有问题,还是要怎么解决?
#注释:以下为"随机生成一个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>以外的任何代码
我觉得使用While,但是他为什么要用for? 新的开始123 发表于 2021-6-2 23:00
我觉得使用While,但是他为什么要用for?
for和while没太大的区别,一般情况下用哪个都可以 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('输入的内容必须为正整数,请重新输入:')
新的开始123 发表于 2021-6-2 23:00
我觉得使用While,但是他为什么要用for?
你感觉使用 while 是正确的第一感应。
虽说 while 和 for 是可以通过一些手段相互转化,
但是 我们通常会很明确知道什么时候使用 while 什么时候使用 for
一般我们认为,在有明确循环体(如列表元组)、有明确循环次数(如只能猜5次)的循环应当首选 for
没有明确循环体和循环次数,但是有明确的循环条件(如输入q退出,直到猜中退出)的循环应当首选 while
不过本题要求只能改特定部位,所以也无所谓了。只需将循环次数设置较大就可以了
毕竟要求数字在 1-20 之间的正整数,最多20次,也算是有个次数要求 wp231957 发表于 2021-6-3 07:41
for和while没太大的区别,一般情况下用哪个都可以
那么那两个填什么,我们老师说不会,他说题目有问题。 qq1151985918 发表于 2021-6-3 14:55
这跟次数没关系吧,如果没猜对的话,他就是死循环,但是死循环用for 怎么写 新的开始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:27 编辑
新的开始123 发表于 2021-6-3 16:41
那么那两个填什么,我们老师说不会,他说题目有问题。
如果你们老师认为错误,那这个错误只在教学理念上,你完全可以把我的解释跟老师说。当然题目确实也不够严谨,如果严谨一些就不该用 continue qq1151985918 发表于 2021-6-3 17:25
如果你们老师认为错误,那这个错误只在教学理念上,你完全可以把我的解释跟老师说。当然题目确实也不够 ...
所以这两个空格应该怎么填? qq1151985918 发表于 2021-6-3 15:05
你感觉使用 while 是正确的第一感应。
虽说 while 和 for 是可以通过一些手段相互转化,
但是 我们通常 ...
所以这两个空应该怎么填,使他在没有猜对的情况下,一直循环下去。 新的开始123 发表于 2021-6-3 19:09
所以这两个空应该怎么填,使他在没有猜对的情况下,一直循环下去。
一百年前就贴了代码了看不到吗? qq1151985918 发表于 2021-6-3 19:17
一百年前就贴了代码了看不到吗?
主要按照你的方式还是没有得分。 qq1151985918 发表于 2021-6-3 19:17
一百年前就贴了代码了看不到吗?
主要按照你的方式还是没有得分。 qq1151985918 发表于 2021-6-3 19:17
一百年前就贴了代码了看不到吗?
主要按照你的方式还是没有得分。他显示没有找到主要的关键词。 新的开始123 发表于 2021-6-4 17:49
主要按照你的方式还是没有得分。他显示没有找到主要的关键词。
如果是死读书死记硬背照搬照抄那是没有意义的。我全部都给你写了注释,已经告诉你了答案不唯一。即使是相同的题目,不同人也会写出不一样的代码,否则岂不是一模一样的结果了么。只要你自己知道是否正确就好了。既然你有老师,不妨去问一问,把我给你的代码和注释给你的老师看。你说的他显示没有发现关键字,应该是电脑阅卷吧?不要相信电脑阅卷,电脑只会对比答案,不会写代码。否则还要什么程序员。你要相信你自己,相信你的老师。多去跟你的老师问问吧。 qq1151985918 发表于 2021-6-4 18:33
如果是死读书死记硬背照搬照抄那是没有意义的。我全部都给你写了注释,已经告诉你了答案不唯一。即使是相 ...
我们的计算机考试,就是电脑阅卷啊。 qq1151985918 发表于 2021-6-4 18:33
如果是死读书死记硬背照搬照抄那是没有意义的。我全部都给你写了注释,已经告诉你了答案不唯一。即使是相 ...
没有找到关键词就不给分了,
如果让我写的话,我肯定使用for
今天刚好抽到这一道题,我按照你的方法填写,然后八分还是全扣掉。
页:
[1]