簡體   English   中英

如何使輸入接受空格?

[英]How to make an input accept spaces?

我需要使用Python編寫的程序,該程序將要求用戶在一行中輸入多個數字,每個數字之間用空格分隔。 例如Enter your numbers: 2 1 5 8 9 5 ,我需要打印出來[2, 1, 5, 8, 9, 5]

但是到目前為止,我編寫的程序不接受空格,該如何更改呢? 還有沒有辦法使數字按從小到大的順序排列?

這是我到目前為止的內容:

elx = []

el = input("Enter your numbers: ")
for i in el:
    if el.isdigit():
        elx.append(el)
        break
    if not el.isdigit():
        print ("Number is invalid")
        continue

print (elx)

只需按空格分開,使用列表推導檢查字符串是否由數字組成:

nums = sorted([int(i) for i in input().split() if i.isdigit()])

使用try / except進行排序:

while True:
    el = input("Enter your numbers: ")
    try:
        elx = sorted(map(int, el.split()))
        break
    except ValueError:
        print("Invalid input")

如果用戶可以輸入負數,則isdigit將失敗。

同樣,如果用戶輸入1 2 3 f 5我認為應該將其視為不可忽略的錯誤。

s = input('Gimme numbers! ') # '1 2 3'
s = list(map(int, s.split()))
print(s) # [1, 2, 3]

這將生成一個字符串列表,其中包含數字( s.split(' ') ),這些數字又會被映射轉換為int。

最后,要對列表進行排序,請使用sort(s)

編輯:如官方文檔中所述,如果某些數字用兩個空格分隔,則使用split(sep=' ')會引發異常,因為在這種情況下,拆分會生成一個空字符串( '1 2'.split(' ') == ['1', '', '2'] ),而int()將無法對其進行轉換。

感謝Padraic Cunningham指出了這一點!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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