在python中输入只能在字符串中

时间:2018-11-06 13:39:28

标签: python string input

我是Python的初学者,请不要使用复杂或高级的代码。

我有三个if条件,我希望对此条件作出某些响应,并且我希望我的代码仅给出一个响应。

  1. 首先,我希望输入仅以字符串形式回答而不是整数或浮点数

    f = input("Please enter your name :")
    
  2. 如果给出整数或浮点数,则应该给出错误

    if type (f)== int or float :
        print("Invalid entry")
    
  3. if f=="" :
        print("Invalid input. Your name cannot be blank. ")
    

我已经尝试过

f = str(input("Please enter your name :"))

它无法正常工作,我的代码仍然接受整数和字符串中的ans。

如果我输入字符串,它会给出以下响应:

if type (f)== int or float :
    print("Invalid entry")

我是一个初学者,所以我可能犯了很多错误。您的耐心将不胜感激。

1 个答案:

答案 0 :(得分:2)

如果您使用的是Python 3.X,则input()总是返回一个字符串。请注意,尽管"1"之类的字符串看上去很像数字,但它们仍然是字符串。

我认为您实际上 想要的是验证字符串仅包含字母字符,在这种情况下,您可以这样做:

s = input("Enter your name: ")
if not s.isalpha():
    print("Please enter only alphabetical characters for your name.")

或者您可能希望接受除仅由数字组成的字符串以外的所有字符串。

s = input("Enter your name: ")
if s.isdigit():
    print("Your name cannot be a number.")

还是只接受完全不包含数字的字符串?

s = input("Enter your name: ")
if any(char.isdigit() for char in s):
    print("Please do not include digits in your name.")

如果您使用的是Python 2.7或更低版​​本,input()可以返回字符串,整数或任何其他类型的对象。通常,这比它值得的事更令人头疼,因此,我建议切换到raw_input(),此时,以上所有建议均适用。


一旦您具有适用于验证条件的正确逻辑,您可能会认为“好吧,但是如何使程序返回到第一个input()调用,以便用户有另一个机会输入验证码正确的输入?”。如果是这样,您可能会发现这很有用:Asking the user for input until they give a valid response


PS。当涉及名称时,请注意验证输入的严格程度。接受异常输入方面的错误。否则,您可能会收到诸如“第三名约翰·史密斯”,“史蒂夫·奥雷里”或“田中太郎”之类的人的投诉。相关阅读:Falsehoods Programmers Believe About Names

相关问题