石页不禾几 发表于 2020-7-13 12:42:34

Python第33讲课后题,求解惑

Python中,33讲第二题,为什么我的代码运行后,给一个非整数,就回一直无休止的打印您输入的不是整数,而答案运行后,只会打印一次?好像在循环部分我的和答案一样啊。
def int_input(num):
    while True:
      try:
            int(num)
            break
      except ValueError:
            print('您输入的不是整数!')

num = input('请输入一个整数:')
int_input(num)

Twilight6 发表于 2020-7-13 12:47:00

本帖最后由 Twilight6 于 2020-7-13 12:48 编辑



给一个非整数,就回一直无休止的打印您输入的不是整数?

因为你输入的 num 非整数会导致 int 报错,而不会执行到 break,而继续开始下次循环,继续报错,继续开始下次循环,继续报错......

这样?只需要打印一次的话判断完直接 break 就好了:

def int_input(num):
    while True:
      try:
            int(num)
            print('你输入的是整数!')
      except ValueError:
            print('您输入的不是整数!')
      break

num = input('请输入一个整数:')
int_input(num)

Twilight6 发表于 2020-7-13 12:57:28


这样也行,只有在你输入为整数时候退出循环:

def int_input():
    while True:
      num = input('请输入一个整数:')
      try:
            int(num)
            print('你输入的是整数!')
            break
      except ValueError:
            print('您输入的不是整数!')
            
int_input()
页: [1]
查看完整版本: Python第33讲课后题,求解惑