![](/img/trans.png)
[英]How to validate a string input in python using datetime library and keep prompting user for input until valid input?
[英]prompting integer and string input using “input” in python
在python中,我可以使用input()來獲取輸入而不考慮數據類型。我知道我們不能直接使用input()輸入字符串。 但是,如何在用戶不知道輸入類型的情況下提示用戶輸入?
input
(假設Python 3;在Python 2中,您應該使用raw_input
)總是返回一個字符串。 因此,您要做的就是嘗試將其轉換為各種數據類型。 當您無法將其轉換為另一種時,請嘗試另一種。 如果您無法將其轉換為嘗試的任何類型,請按原樣使用字符串。 對於簡單的情況,我喜歡一個輔助函數:
def tryconvert(value, *types):
for t in types:
try:
return t(value)
except ValueError, TypeError:
continue
return value
value = tryconvert(input("Enter value: "), int, float)
請注意,您必須指定從最排他到最少的類型嘗試。 例如,每個整數都可以解析為float,因此float
不能早於int
因為所有int
都將解析為float
。
另一種方法是使用ast.literal_eval
,它使用Python自己的規則將包含任何有效Python文字的字符串轉換為該數據類型。 (這使您可以輸入True
, False
, None
,列表,元組和字典,以及整數,浮點數和復雜的數字。)如果失敗,則可以捕獲錯誤並僅使用輸入的原始字符串即可。
from ast import literal_eval
value = input("Enter value: ")
try:
value = literal_eval(value)
except ValueError:
pass
解析完字符串后,打印值的類型很容易:
print(type(value))
或更簡潔地:
print(type(value).__name__))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.