64877982 发表于 2023-11-24 15:20:51

P18了不起的分支循环自己研究的一个问题求助

day = 1
hour = 1
while day <= 7:
    while hour <= 8:
      daka = input("输入任意内容打卡:")
      print(f"打卡成功:你今天学习了{hour}个小时")
      hour += 1
    print(f"你已经学习了第{day}天")
    day += 1
else:
    print("贵在坚持,你有这超乎常人的毅力")


如上代码 我想实现每天都打8次卡 但是这个就第一天打卡了 后面的就跳过了 这个问题有点没搞懂 他不是应该每一天都会把8个小时重新循环一次吗?

FishC_GPT 发表于 2023-11-24 15:20:59

请问你在求助的问题是什么?代码中的while循环不完整,无法理解你的具体需求。请提供更详细的问题描述。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

Mike_python小 发表于 2023-11-24 15:21:59

问题描述:

在上述代码中,想要实现每天打8次卡,但是只有第一天会打卡,后面的天数都跳过了。这个问题有点没搞懂,他不是应该每一天都会把8个小时重新循环一次吗?

原因分析:

出现这种情况的原因是因为内层循环的初始条件没有重置。在第一个内层循环执行完毕后,hour的值变为9,导致后续的循环条件不满足,从而跳过了打卡的代码块。

解决方法:

为了实现每天都打8次卡,需要在外层循环的开始处将hour重置为1,以便每天都从第一个小时开始打卡。

以下是修改后的代码:


day = 1
while day <= 7:
    hour = 1
    while hour <= 8:
      daka = input("输入任意内容打卡:")
      print(f"打卡成功:你今天学习了{hour}个小时")
      hour += 1
    print(f"你已经学习了第{day}天")
    day += 1
else:
    print("贵在坚持,你有这超乎常人的毅力")


这样,每天都会打8次卡,并输出每天的学习时间和打卡天数。

希望这个解决方案对你有帮助。如果你还有其他问题,请随时提问。

回复来自于CHAT-GPT。回复仅供参考,如有人工回答,最佳答案请优先选择人工

tommyyu 发表于 2023-11-24 15:25:10

第一次循环之后 hour 的值就直接变成 8 了,以后的循环的初始值 hour 也都是 8。 应该把对 hour 的赋值语句放在循环里面。day = 1
while day <= 7:
    hour = 1 #改了这里
    while hour <= 8:
      daka = input("输入任意内容打卡:")
      print(f"打卡成功:你今天学习了{hour}个小时")
      hour += 1
    print(f"你已经学习了第{day}天")
    day += 1
else:
    print("贵在坚持,你有这超乎常人的毅力")

64877982 发表于 2023-11-24 15:25:25

Mike_python小 发表于 2023-11-24 15:21
问题描述:

在上述代码中,想要实现每天打8次卡,但是只有第一天会打卡,后面的天数都跳过了。这个问题有 ...

哈哈 大佬 你这个 hour移动一下位置就可以了,学到了 上面的等于就是 把hour和day的循环放一起了所以就只算一天的循环 懂了 谢谢了大佬
页: [1]
查看完整版本: P18了不起的分支循环自己研究的一个问题求助