Python:如何要求将字符串作为输入而不是特定值

时间:2018-06-28 15:35:44

标签: python string loops while-loop

对于YourName input(),我想获取一个字符串值。因此,它不应该是float,int等。在此示例中,我想将“ Sunny”替换为字符串的任何值,以使while循环接受输入。

YourName = ''

while YourName != "Sunny":
    print("Please type in your name")
    YourName = input()

print(YourName + " is correct")

最好先谢谢

Sentino

3 个答案:

答案 0 :(得分:4)

如评论中所述,您可以使用类似于以下内容的内容:

YourName = input("Please enter your name: ")

while True:
    if YourName.isalpha():
        break
    else:
        print("Must enter string")
        print("Please type in your name")
        YourName = input("Please enter your name: ")
        continue

isinstance()是一个内置函数,用于检查变量是否属于特定类,例如isinstance(my_var, str) == True但是Input()函数始终返回字符串。因此,如果您要确保输入的是所有字母,都想使用.isalpha()。您也可以使用Try/except。正如@SiHa所说,this SO question的反应很好。


正如注释中指出的,如果字符串中有空格,则此答案将无效。如果要允许多种名称格式,可以使用Regex。例如,您可以执行以下操作:

import re

YourName = input("Please enter your name: ")

while True:
    if re.fullmatch(r"[a-zA-Z]+\s?[a-zA-Z]+", YourName) is not None:
        break
    else:
        print("Must enter string")
        print("Please type in your name")
        YourName = input("Please enter your name: ")
        continue

与正则字符串方法相比,使用正则表达式将使您对输入有更多的控制。 DocsPython Regex HOWTOre是python随附的标准库,可为您提供最大的灵活性。您可以使用regex101来帮助您进行测试和调试。

如果找到re.fullmatch(),如果没有找到,None将返回一个匹配对象。它表示输入可以是任何小写或大写字母,中间有一个可选空格,后跟更多字母。


如果您不想导入包,则可以遍历输入对象并使用以下命令检查所有字符是空格还是字母:

all([x.isalpha() | x.isspace() for x in YourName])

但是,这不会说有多少空间或它们在哪里。如果需要更多控制,最好使用正则表达式。

答案 1 :(得分:1)

您可能正在使用Python 2.7,在这种情况下,如果要直接将输入作为字符串,则需要使用raw_input()

否则,在Python 3中,input()总是返回一个字符串。因此,如果用户输入“ 3 @!%”作为其名称,则该值将存储为字符串(您可以使用type(variable)检查变量的类型)。

如果要检查以确保字符串仅包含字母,则可以使用方法isalpha()isspace()(在我的示例代码中,我假设您要允许空格,但是如果您需要一个单词的答复,则可以排除该部分。

由于这些方法对字符进行操作,因此需要使用for循环:

YourName =""
while YourName is not "Sunny" or not all(x.isalpha() or x.isspace() for x in YourName):

     #You can pass a string as a prompt for the user here
     name = input("please enter name")
print (YourName)

但是,我应该注意,由于没有包含非字母字符的字符串都不能等于“ Sunny”,因此此检查完全是多余的。

答案 2 :(得分:0)

正如其他人指出的那样,String dataDir = Path.GetFullPath("chromium-data"); BrowserContextParams params1 = new BrowserContextParams(dataDir); BrowserContext context1 = new BrowserContext(params1); Browser browser = BrowserFactory.Create(context1); CookieStorage cookieStorage = browser.CookieStorage; cookieStorage.SetSessionCookie("https://vk.com/", "ggggggg", "jnjnjnjnjnjnj", "vk.com", dataDir, true, false); cookieStorage.Save(); browser.UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"; browser.LoadURL("https://vk.com/"); 总是返回一个字符串。

您可以使用input()方法检查字符是否为字母。

str.isalpha

示例:

YourName = ''

while True:
    print("Please type in your name")
    YourName = input()
    failed = False
    for char in YourName:
        if not char.isalpha():
            failed = True

    if not failed:
        break