Python 3.x 控制某些要求是否为真的程序

Python 3.x A program thats control if some requirments true

我设计这个项目的目的是听取学生的意见并确保 he/she 输入了 3 位数字。既不小于 3 也不大于 3,并且不应该是字符串。以上所有内容如果有问题,程序应该再次询问直到它变为真

def studentID():
       try:
           number=int(input("sutedent IDS:"))
           try:
                assert len(number)==3

           except AssertionError:
               print("Must be 3 digit number.")
               studentID()

       except ValueError:
           print("Please enter an integer.")
           studentID()

       except TypeError:
           print("What is wrong with you?")
           studentID()

int 没有 len。您必须将其转换回字符串以检查其长度。

def studentid():
    try:
        num = int(input('student ID:'))
        if len(str(num)) != 3:
            print('Please enter a 3-digit number')
            return studentid()
        return num
    except ValueError:
        print('Please enter a 3-digit number')
        return studentid()

您可能还想 return 向来电者发送 num。请注意,我们将输入转换为 int,然后再转换回字符串。这是因为在 Python (3.6+) 的某些最新版本中,您可以在 int 文字中使用下划线,因此 int('1_2') 将是一个有效的 3 字符输入,计算结果为 2 位数字

添加到 Patrick 的评论中,我更喜欢 range(len(3)),它清晰而且效率更高。 我会怎么做

def studentID():
       number=int(input("sutedent IDS:"))
       if range(len(number)) == 3:
           return studentID()
        elif number is not int or range(len(number)) > 3 :
             print('please enter a valid number')
             return studentID()
        else:
             raise ValueError
             return studentID()