橙萌官兆 发表于 2023-6-29 09:00:16

isdigit怎么调用

while 1:
    digit1 = input('请输入一个自然数:')
    if digit1.isdigit():
      digit1 = int(digit1)
      if digit1 % 2 == True:
            i = digit1 * 3 + 1
            print('%d*3+1 = %d' % (digit1, i))
            while 1:
                if i.isdigit():#这一行我想判断变量i是否是整数类型,不是的话退出结果调用不到是为啥
                  break
                print('%d/2 = %d' % (i, i/2))
                i = i / 2
                if i <= 1:
                  break
      elif digit1 % 2 == False:
            i = digit1
            while 1:
                print('%d/2 = %d' % (i, i/2))
                i = i / 2
                if i <= 1:
                  break
    else:
      print('请重新正确输入:')

isdkz 发表于 2023-6-29 09:00:17

isdigit()是一个字符串方法,它用于检查字符串是否只包含数字。对于非字符串数据类型,例如整数或浮点数,该方法无法调用。你的变量i是整数,然后变成了浮点数,所以你不能在i上调用isdigit() 。

如果你希望检查一个变量是否是整数类型,你可以使用 Python 内置的isinstance()函数,像这样:

isinstance(i, int)


不过在你的程序中,由于i是由算术操作得到的,有可能会变成浮点数。这样, isinstance(i, int)可能会返回False ,即使i是一个整数值的浮点数(例如,3.0)。如果你希望检查i是否等于其整数形式(即,检查i是否有小数部分),你可以使用以下表达式:

i == int(i)


如果i是浮点数且等于其整数形式,或者i本身就是整数,那么这个表达式将返回True 。

此外,注意在你的程序中,你用i/2计算了新的i值,这可能会产生浮点数结果。如果你想保持结果为整数,可以使用//运算符进行整数除法,像这样:

i = i // 2


这样,无论i是否能被2整除,结果总是一个整数。这意味着你可以始终用isinstance(i, int)来检查i是否为整数。
页: [1]
查看完整版本: isdigit怎么调用