簡體   English   中英

在Python中使用“輸入”提示輸入整數和字符串

[英]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文字的字符串轉換為該數據類型。 (這使您可以輸入TrueFalseNone ,列表,元組和字典,以及整數,浮點數和復雜的數字。)如果失敗,則可以捕獲錯誤並僅使用輸入的原始字符串即可。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM