关于python:’而User_Name!= str()’不接受字符串

'while User_Name != str()' will not accept strings

本问题已经有最佳答案,请猛点这里访问。

我的导师让我做一个"ID打印机",我想让程序在输入你的名字时不接受整数,但是这样做总体上不会接受字符串。我的代码在下面。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 User_Name =""
 def namechecker():
    print("Please Input Your name")
    User_Name = str(input(":"))
    while User_Name =="":
         print("Please input your name")
         User_Name = str(input(":"))


    while User_Name != str():
         print("Please use characters only")
         print("Please input your name")
         User_Name = input (":")

print("Thankyou,", User_Name)
namechecker()


你的问题很不清楚。读完后,我想你想得到一个只有字母字符的用户名。您可以使用str.isalpha进行以下操作:

1
2
3
4
5
6
7
8
9
10
def getUserName():
   userName = ''
   while userName == '' or not userName.isalpha():
        userName = input('Please input your name: ')
        if not userName.isalpha():
            print('Please use alphabet characters only')
   return userName

userName = getUserName()
print('Thank you, {}'.format(userName))


如果您想跟上检查数字的想法,还可以检查字符串是否只包含str.isdigit()的数字。

这样地:

1
2
3
4
5
6
7
8
9
10
11
def namechecker():
  User_Name =""
  while True:
    User_Name = input("Please input your name:") # input will always be a string
    if User_Name.isdigit(): # check if the string contains only digits // returns True or False
      print("Please use chracters only")
      continue # stay inside the loop if the string contains only digits
    else: break # leave the loop if there are other characters than digits  
  print("Thankyou,", User_Name)

namechecker()

请注意,如果给定的字符串只包含数字,则此代码将只要求另一个输入。如果要确保字符串只包含字母字符,则可以使用string.isalpha()。

1
2
3
4
5
6
7
8
9
10
11
def namechecker():
  User_Name =""
  while True:
    User_Name = input("Please input your name:")
    if not User_Name.isalpha():
      print("Please use chracters only")
      continue
    else: break

  print("Thankyou,", User_Name)
namechecker()

这样就可以了,输入中不允许有数字。但是,您应该阅读关于内置类型的文档。