神奇的二哈 发表于 2022-3-22 10:20:01

代码运行问题

times = 3
temp = input('请输入一个年份')
while not temp.isdigit():
    print('抱歉输入错误')
if times > 1:
      print('请输入整数')
      
year = int(temp)
if (year/400) == int(year/400):
         print(temp + '是闰年')
else:
    if(year/4) == int(year/4) and (year/100) != int(year/100):
            print(temp + '是闰年')
    else:
         print('不是闰年')
    if times > 1:
         print('请再输入一遍',end='')
    else:
         print('抱歉机会用光了')
            
times = times - 1


请大佬看看这个自己改的代码,想弄成次数,但是运行起来,一次就结束了,不知道哪里出啦问题
写的可能太粗糙,各位不要嫌弃,给指正一下{:5_96:}

python爱好者. 发表于 2022-3-22 10:56:26

你这算法都有问题

python爱好者. 发表于 2022-3-22 10:59:44

python爱好者. 发表于 2022-3-22 10:56
你这算法都有问题

times = 3

while times > 0:
    temp = input('请输入一个年份:')
    while not temp.isdigit():
      temp = input("请重新输入:")
               
    years = int(temp)
    if (years % 4 == 0 and years % 100 != 0) or (years % 400 == 0):
      print(temp + '是闰年')
    else:
      print('不是闰年')
               
    times = times - 1

神奇的二哈 发表于 2022-3-22 16:42:44

python爱好者. 发表于 2022-3-22 10:59


十分感谢给出的代码
大佬,但是我的代码倘若去掉关于times的代码运行,他是可以准确的运行的呀,并且他的算法没有问题啊,得出的结果跟你的一样啊。
有一地方不懂的是这个times该怎么个用法啊,我用了几次都没用对过

神奇的二哈 发表于 2022-3-22 16:55:03

python爱好者. 发表于 2022-3-22 10:59


大佬,你这个代码,倘若输的不是整数,一直输入的是小数的话,就不受次数的限制了,可以一直输入

python爱好者. 发表于 2022-3-22 17:06:39

神奇的二哈 发表于 2022-3-22 16:55
大佬,你这个代码,倘若输的不是整数,一直输入的是小数的话,就不受次数的限制了,可以一直输入

你的判断是判断是否为字符串吧......

sfqxx 发表于 2023-5-3 12:22:13

根据你提供的代码,我看到以下几点需要修改:

1. 如果想要实现多次输入,那么应该将整个代码逻辑放在一个 `while` 循环内部。

2. 计数器变量 `times` 在 `while` 循环中应该初始化,并且在每次循环末尾更新计数器。

3. 输入判断的部分可以封装成一个函数,避免代码冗余。

4. 判断输入值是否是整数的部分可以使用 Python 内置函数 `isdigit()` 更加简洁地实现。

综上所述,修改后的代码如下:


times = 3

while times > 0:
    temp = input('请输入一个年份:')
    if not temp.isdigit():
      print('抱歉输入错误,请输入整数')
      times -= 1
      continue
      
    year = int(temp)
    if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
      print(f'{temp} 是闰年')
    else:
      print(f'{temp} 不是闰年')
    times -= 1

print('抱歉机会用光了')

修改后的代码实现了多次输入年份的功能。每次输入年份时先检查输入是否合法(即是否为整数),如果不是,则计数器减一并开始新一轮循环;如果是,则进行闰年判断并输出结果。当计数器 `times` 减至零时,输出结束信息。

isdkz 发表于 2023-5-3 12:59:22

您好!从您的描述来看,您希望建立一个具有重试次数的程序,用于判断输入的年份是否为闰年。根据您提供的代码,我发现了一些问题,并对其进行了相应的修改。请参考以下代码:

times = 3

while times > 0:
    temp = input('请输入一个年份:')

    if not temp.isdigit():
      print('抱歉,输入错误,请输入整数。')
    else:
      year = int(temp)

      if (year % 400) == 0 or (year % 4 == 0 and year % 100 != 0):
            print(temp + '是闰年')
      else:
            print(temp + '不是闰年')

    times -= 1
    if times > 0:
      print('您还有{}次尝试机会。'.format(times))
    else:
      print('抱歉,机会已用光。')


在这个修改后的代码中,我将主要逻辑放入了一个 while 循环中,以便于实现重试次数的功能。在每次循环中,都会提示用户输入年份并进行判断,循环结束后,会根据剩余次数给出相应提示。
页: [1]
查看完整版本: 代码运行问题