2016-04-26 27 views
1

我已經使用while循環接近了我自己的問題,如果功能和嘗試/除了,但尚未達到預期的結果。如何創建只能接收字符串的輸入?

這裏是我最近嘗試的方法:

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

我一直在這裏有錯誤是,它要麼繼續循環,不接受一個字符串作爲字符串或接收數量一個字符串。

我的目標是讓用戶只能選擇提供的選項或所需的對象類型。

回答

0

下面是一個使用Python的例子。獲取初始用戶響應,然後使用while循環繼續獲取響應,直到他們輸入有效的響應。

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

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

我不是Python編碼器,所以我的代碼可能關閉,但這可能會給你一個關於如何做到這一點的好主意。我通常使用PHP或PERL。

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'