0

数値が 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 と比較できないと表示されます。助けてください。前もって感謝します。

4

3 に答える 3

2

変数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 を実行している場合は、 inputの代わりにraw_inputを使用することをお勧めします。

于 2013-04-11T01:28:55.123 に答える
0

これはどのループにもないように見えるので、リストに複数のエントリを含める方法がわかりません.おそらく、スペースで区切られた数字を入力できますか? 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]
于 2013-04-11T01:42:46.743 に答える
0

コンマで区切って数値を入力すると、次の 1 行が機能します。

>>> 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]
于 2013-04-15T18:22:25.390 に答える