如何创建只能接收字符串的输入?

时间:2016-04-26 19:42:34

标签: python-3.5

我已经使用while循环接近我自己的问题,如果函数和try / except,但还没有达到预期的结果。

这是我最近尝试过的方法:

Surname2 = input('\nSurname:')
while Surname2 != type('a'): #2
    print('\nPlease define Surname only in letters')
    Surname2 = input('\nSurname:')
    break

我在这里遇到的错误是它继续循环,不接收字符串作为字符串或接收数字作为字符串。

我的目标是让用户只能选择提供的选项或所需的对象类型。

2 个答案:

答案 0 :(得分:0)

这是使用Python的一个例子。获取初始用户响应,然后使用while循环继续获取响应,直到他们输入有效响应。

Gender2 = input('Gender (M/F):')

while (Gender2 != "M" and Gender2 != "F"):
   Gender2 = input('Gender (M/F):')

我不是Python编码器,因此我的代码可能会关闭,但这可能会让您对如何执行此操作有所了解。我通常使用PHP或PERL。

答案 1 :(得分:0)

以下功能可以做你想要的。

def get_input(message, choices):
    assert type(message) == type("string"), "Message must be a string"
    assert type(choices) == type([]), "Choices must be an array"
    choice = ""
    out = message + " (" + "/".join(choices) + "): "
    while True:
        c = input(out)
        if c in choices:
            break
        else:
            print "Please enter a valid choice"
    return c

简单地称之为:

get_input("Gender", ["M","F"])

一些测试电话:

Gender (M/F): asdf
Please enter a valid choice
Gender (M/F): 234
Please enter a valid choice
Gender (M/F): 1
Please enter a valid choice
Gender (M/F): 534
Please enter a valid choice
Gender (M/F): zxcv
Please enter a valid choice
Gender (M/F): Ff
Please enter a valid choice
Gender (M/F): Mm
Please enter a valid choice
Gender (M/F): m
Please enter a valid choice
Gender (M/F): f
Please enter a valid choice
Gender (M/F): M
'M'