Python 我的代码中的函数不起作用
我正在做一个程序,其中包括一些验证Python 我的代码中的函数不起作用,python,index-error,Python,Index Error,我正在做一个程序,其中包括一些验证 number = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] def UsernameValidation(): New_Username_char = ("") Valid = 0 if not len(New_Username) <= 4: print("Username too short") for i in range(0, len(Ne
number = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
def UsernameValidation():
New_Username_char = ("")
Valid = 0
if not len(New_Username) <= 4:
print("Username too short")
for i in range(0, len(New_Username) - 2):
New_Username_char[i] = str(New_Username[i])
if New_Username_char.islower():
print("Username should be in uppercase")
Valid += 1
if New_Username[len(New_Username)] not in number or New_Username[len(New_Username)-1] not in number:
print("The Username should be followed by two number")
Valid += 1
number=[“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”]
def UsernameValidation():
新的\用户名\字符=(“”)
有效=0
如果len(新用户名)New\u Username[len(新用户名)-1]
不是New\u Username中的最后一个字符,您可以通过说New\u Username[len(新用户名)]
来尝试访问该字符以外的一个字符
字符串中第一个字符的索引是0,下一个是1,然后是2,然后是3,依此类推,例如:
String: 'H', 'e', 'l', 'l', 'o'
Index: 0 , 1 , 2 , 3 , 4
String: 'H', 'e', 'l', 'l', 'o'
Index: 0 , 1 , 2 , 3 , 4 , 5
^
There is no character at index 5, so an IndexError is thrown
len(string)
返回字符串中的字符数,在以下示例中,字符数为5,5超出范围,例如:
String: 'H', 'e', 'l', 'l', 'o'
Index: 0 , 1 , 2 , 3 , 4
String: 'H', 'e', 'l', 'l', 'o'
Index: 0 , 1 , 2 , 3 , 4 , 5
^
There is no character at index 5, so an IndexError is thrown
这是函数的更新版本。正如你在下面的评论中所看到的,它有一些问题
def UsernameValidation(new_username):
new_username = str(new_username)
if len(new_username) <= 4:
print("Username too short")
return False
if any(x.islower() for x in new_username):
print("Username should be in uppercase")
return False
if not new_username[-2:].isnumeric():
print("The Username should be followed by two numbers")
return False
print('Password accepted!')
return True
print(UsernameValidation('and')) # too short - REJECTED
print(UsernameValidation('ANDrEW')) # contains lowercase - REJECTED
print(UsernameValidation('ANDREW')) # no numbers - REJECTED
print(UsernameValidation('ANDREW12')) # ACCEPTED
def用户名验证(新用户名):
新用户名=str(新用户名)
如果len(新用户名)Wellnew\u username[len(新用户名)]
,len(x)
对于列表/字符串x
无效,因为索引范围从0
到len(x)-1
(包括两者)。字符串、列表等中的最高索引比其长度小一个,因此new\u username[len(新用户名)]
正在尝试索引字符串结尾以外的内容。还有什么是数字
?顺便说一句,用户名验证
函数应该接受它正在验证的用户名作为参数。它不应该从全局上下文中阅读,那只是混乱。当然如果不是len(新的_用户名),请在必要时添加注释来解释为什么要进行这些更改。