簡體   English   中英

如何將整數列表轉換為整數?

[英]How do I convert a list of integers to ints?

我正在制作一個程序,只要數字低於300,就可以從最低到最高對數字進行排序,但我無法弄清楚如何將用戶輸入更改為列表。 這是我的代碼:

List1=[]
List2=[]
var=1
thing=input("Insert numbers here")
List1.append(thing)
while var < 300:
    for that in List1:
        if that < var:
            List2.append(number)
    var = var + 1
print(List2)

當我運行代碼時,它表示在第8行中,字符串無法與int進行比較。 請幫忙。 提前致謝。

它看起來像你的變量that是一個字符串。 這就是為什么你不能將它與整數進行比較的原因。 如果需要將字符串轉換為int ,則可以使用int (your_variable_here)將其包裝起來。

例如

if int(that) < var:

這將字符串轉換that一個整數 (數字)。 將其轉換為整數的好處是可以將其與其他整數進行比較,並使用基本的算術運算 如果您使用字符串,這是不可能的。

更好的解決方案是將輸入直接存儲為整數。

List1.append(int(thing)) # We wrap the keyboard input with int

另外,如果您運行的是Python 2.x,我建議您使用raw_input而不是input

由於這似乎沒有在任何循環中,我看不出你如何在列表中有多個條目..也許你可以輸入空格分隔數字? 使用python 3 ,這可以像這樣最小化(減去錯誤處理):

nums = [x for x in list(map(int, input("Enter numbers: ").split())) if x < 300]    
nums.sort()

要么..

nums = input("Enter numbers: ") # Get the number string
nums = nums.split() # Split the string by space character
nums = list(map(int, nums)) # call int() on each item in the list, converting to int
nums.sort() # sort the list of numbers
nums = [x for x in nums if x < 300] # remove any numbers 300 or over.

輸入輸出:

Enter numbers: 1 5 301 3000 2
[1, 2, 5]

如果輸入以逗號分隔的數字,則以下單行將起作用:

>>> sorted(list(input("Enter numbers: ")), reverse=True)
Enter numbers: 1, 2, 3
[3, 2, 1]

要刪除數字<300:

>>> sorted([num for num in input("Enter numbers: ") if num < 300], reverse=True)
Enter numbers: 1, 301, 299, 300, 2, 3
[299, 3, 2, 1]

暫無
暫無

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

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