使用Python在带有范围的for循环中查找最小数字

时间:2014-03-17 02:32:15

标签: python for-loop range

首先,我正在使用python。好的,所以我需要打印迭代通过这个for循环后找到的最小浮点数。我尝试使用min(),我得到一个错误,说'浮动'对象不可迭代。我想不出另一种方法来打印出最小的数字或接受所有的浮点数,所以我可以使用min()函数。任何帮助,将不胜感激。这是我的代码:

def decryption():
    alphabet=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]    
    phrase=input('What would you like decrypted?')
    number=0
    for number in range(0,26):
        e=0+number
        t=0+number
        o=0+number
        a=0+number
        i=0+number
        n=0+number
        for letter in phrase:
            if letter== 'e':
                e+=1 
            if letter== 't':
                t+=1
            if letter== 'o':
                o+=1
            if letter== 'a':
                a+=1
            if letter== 'i':
                i+=1
            if letter== 'n':
                n+=1        
        e_freq= .1119-e/10
        e_ans= e_freq*e_freq

        t_freq= .0928-t/10
        t_ans= t_freq*t_freq

        o_freq= .0819-o/10
        o_ans= o_freq*o_freq

        a_freq= .0754-a/10
        a_ans= a_freq*a_freq

        i_freq= .0710-i/10
        i_ans= i_freq*i_freq

        n_freq= .0643-n/10
        n_ans= n_freq*n_freq

        square_sum= e_ans+t_ans+o_ans+a_ans+i_ans+n_ans

1 个答案:

答案 0 :(得分:1)

min函数将数字列表作为参数。因此,您需要创建一个包含要搜索的所有数字的数组,然后才能使用min。 (实际上,正如错误所说,它需要一个可迭代的,这比列表更通用)

另一种方法是跟踪到目前为止看到的最小的一个,并在每次迭代结束时进行检查。

if smallest_seen > square_sum:
    smallest_seen = square_sum

然后,在循环结束时,smallest_seen将是所有计算的square_sum值中的最小值。

这是一个更完整的例子。

import sys                                                              
import random                                                           

smallest_seen = sys.float_info.max                                      

for i in range(26):                                                     
    some_num = random.random()                                          
    if smallest_seen > some_num:                                        
        smallest_seen = some_num                                        

print(smallest_seen)