Python中验证用户输入的字符串Python中验证用户输入的字符串(Validating user

2019-05-12 06:02发布

所以,我搜索的话“串”,“巨蟒”,“验证”,“用户输入”的几乎所有排列,等等,但我还没有遇到那个的工作对我一个解决方案。

我的目标是提示用户他们是否希望使用字符串“yes”和“no”来启动另一个事务,我想,字符串比较会在Python一个相当简单的过程,但有些事情是不工作对。 我使用Python 3.X,所以输入应不使用原始输入,据我了解服用的字符串。

该计划将一直踢回无效的输入,输入即使“是”或“不”,但真正奇怪的是,每次我进入长度或int值AA串> 4个字符的时候,它会检查它作为有效的正输入并重新启动程序。 我还没有找到一种方式来获得有效的负输入端。

endProgram = 0;
while endProgram != 1:

    #Prompt for a new transaction
    userInput = input("Would you like to start a new transaction?: ");
    userInput = userInput.lower();

    #Validate input
    while userInput in ['yes', 'no']:
        print ("Invalid input. Please try again.")
        userInput = input("Would you like to start a new transaction?: ")
        userInput = userInput.lower()

    if userInput == 'yes':
        endProgram = 0
    if userInput == 'no':
        endProgram = 1

我也曾尝试

while userInput != 'yes' or userInput != 'no':

我将不胜感激,不仅与我的问题有所帮助,但如果任何人有关于Python如何处理字符串,将是巨大的任何其他信息。

对不起提前如果别人已经问这样的问题,但我尽我所能去搜索。

谢谢大家!

〜戴夫

Answer 1:

您正在测试如果用户输入 yesno 。 添加not

while userInput not in ['yes', 'no']:

有一点点更快,更接近你的意图,使用一组:

while userInput not in {'yes', 'no'}:

你使用的是什么userInput in ['yes', 'no']这是True ,如果userInput或者是等于'yes''no'

接下来,使用一个布尔值来设置endProgram

endProgram = userInput == 'no'

因为你已经验证了userInput要么yesno ,就没有必要测试yes或者no重新设置你的标志变量。



Answer 2:

def transaction():

    print("Do the transaction here")



def getuserinput():

    userInput = "";
    print("Start")
    while "no" not in userInput:
        #Prompt for a new transaction
        userInput = input("Would you like to start a new transaction?")
        userInput = userInput.lower()
        if "no" not in userInput and "yes" not in userInput:
            print("yes or no please")
        if "yes" in userInput:
            transaction()
    print("Good bye")

#Main program
getuserinput()


文章来源: Validating user input strings in Python