私は次のコードを持っています:
l = ['-1.2', '0.0', '1']
x = 100.0
for i in l:
if i < x:
x = i
print x
コードはリスト内の最小値(-1.2)を見つける必要がありますが、代わりに「x」を印刷すると、値がまだ100.0であることがわかりますコードはどこに問題がありますか?
整数を比較するのではなく、文字列を比較します。文字列は、値をfloatに変換することにより(必要に応じて)代わりに、辞書式に(文字ごとに意味する)比較します。比較する前に、リストに数値(必要に応じて浮動小数点または整数)を保持させるか、文字列をループ内の浮動小数点または整数に変換します。
min
組み込み関数にも興味があるかもしれません。この関数は、現在のループが実行していることを既に実行しています(つまり、変換せずに)。
リストを数字のリストに変換したいようです
>>> foo = ['-1.2', '0.0', '1']
>>> bar = map(float, foo)
>>> bar
[-1.2, 0.0, 1.0]
>>> min(bar)
-1.2
または、本当に必要な文字列である場合は、min
のkey
引数を使用します
>>> foo = ['-1.2', '0.0', '1']
>>> min(foo, key=float)
'-1.2'
Pythonには、最小値を見つけるのに役立つmin
関数が組み込まれています。
ただし、最小の整数を見つける前に、リストアイテムを数値に変換する必要があります(そのフロートは何ですか?)
min(float(i) for i in l)
l
は文字列のリストです。そのような単一引用符の間に数字を入れると、文字のシーケンスである文字列が作成されます。コードを適切に機能させるには、これを行う必要があります。
l = [-1.2, 0.0, 1] # no quotation marks
x = 100.0
for i in l:
if i < x:
x = i
print x
文字列のリストを使用する必要がある場合は、Python各文字列から数字を作成してみてください。これは Justinの答え と似ていますが、それ以外は浮動小数点(10進数)数を正しく理解します。
l = ['-1.2', '0.0', '1']
x = 100.0
for i in l:
inum = float(i)
if inum < x:
x = inum
print x
これが、Pythonまたは一般的なプログラミングのいずれかを学ぶために書いているコードであることを望みます。これが事実である場合、素晴らしい。しかし、これが本番コードの場合、Pythonの組み込み関数。
l = ['-1.2', '0.0', '1']
lnums = map(float, l) # turn strings to numbers
x = min(lnums) # find minimum value
print x
比較を行う前に、変数をfloatにキャストします。
if float(i) < float(x):
問題は、文字列をフロートと比較していることです。これは機能しません。
number_list = [99.5,1.2,-0.3]
number_list.sort()
print number_list[0]
list1 = [10,-4,5,2,33,4,7,8,2,3,5,8,99,-34]
print(list1)
max_v=list1[0]
min_v=list1[0]
for x in list1:
if x>max_v:
max_v=x
print('X is {0} and max is {1}'.format(x,max_v))
for x in list1:
if x<min_v:
min_v=x
print('X is {0} and min is {1}'.format(x,min_v))
print('Max values is ' + str(max_v))
print('Min values is ' + str(min_v))
正しいコードはどこかから始める必要があります:
最小値を返すコード
l = [ '0.0', '1','-1.2'] x = l[0] for i in l: if i < x: x = i print x
ただし、引用符''
を使用する代わりに、整数を直接使用することをお勧めします
この方法!
l = [ 0.0, 1,-1.2] x = l[0] for i in l: if i < x: x = i print x
l = [-1.2, 0.0, 1]
x = 100.0
for i in l:
if i < x:
x = i
print (x)
これが答えです、宿題にこれが必要で、あなたのコードを取り、数字の周りの「」を削除して、それがうまくいった、これが助けてくれることを願っています
または、リストでフロートを指定するだけで、フロート変換はまったく行われません。
l = [-1.2, 0.0, 1]
x = min(l)
または
l = min([-1.2, 0.0, 1])
リストに文字列があり、それらを数字100.0と比較しています。
'''関数'''
import math
#functions
def min3(x1,x2,x3):
if x1<= x2 and x1<= x3:
return x1
Elif x2<= x1 and x2<= x3:
return x2
Elif x3<= x2 and x3<= x1:
return x3
print(min3(4, 7, 5))
print(min3(4, 5, 5))
print(min3(4, 4, 4))
print(min3(-2, -6, -100))
print(min3("Z", "B", "A"))