Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在列表中找到最小值_Python - Fatal编程技术网

Python 在列表中找到最小值

Python 在列表中找到最小值,python,Python,这里的程序非常简单。我试图取一个正整数n,生成一个由100到500之间的n个随机数组成的列表,并返回列表中出现的最小值 import random def randomNumber2(n): mylist2 = [] needMoreNumbers2 = True while (needMoreNumbers2): randomNumber2 = int(random.random() * 500) myList2.append(rando

这里的程序非常简单。我试图取一个正整数n,生成一个由100到500之间的n个随机数组成的列表,并返回列表中出现的最小值

import random
def randomNumber2(n):
    mylist2 = []
    needMoreNumbers2 = True
    while (needMoreNumbers2):
        randomNumber2 = int(random.random() * 500)
        myList2.append(randomNumber2)
        n >= n - 100
        if (n <= 500):
            needMoreNumbers2 = false
    return myList2
随机导入
def随机数2(n):
mylist2=[]
needMoreNumbers2=真
而(需要更多数字2):
randomNumber2=int(random.random()*500)
myList2.追加(随机数2)
n>=n-100
如果(n)
我试图取一个正整数n,生成一个由100到500之间的n个随机数组成的列表,并返回列表中出现的最小值

import random
def randomNumber2(n):
    mylist2 = []
    needMoreNumbers2 = True
    while (needMoreNumbers2):
        randomNumber2 = int(random.random() * 500)
        myList2.append(randomNumber2)
        n >= n - 100
        if (n <= 500):
            needMoreNumbers2 = false
    return myList2
然后,您不需要该列表,只需返回
n
中生成的最小随机数

随机导入
def smallrand(n,最小量程=100,最大量程=500):
最小值=浮点(“+inf”)
对于X范围内的u(n):
new=random.randint(rangemin,rangemax)
如果新<最小:最小=新
返回最小值

如果您想要更接近您的程序,您需要首先修复程序中的一些东西-它根本不运行。Python区分大小写,因此
mylist2
mylist2
是不同的。在整个过程中使用相同的拼写。类似地,
false
不是Python内置的-
false

解决这些问题,我们将获得:

import random

def randomNumber2(n):
    myList2 = []
    needMoreNumbers2 = True
    while (needMoreNumbers2):
        randomNumber2 = int(random.random() * 500)
        myList2.append(randomNumber2)
        n >= n - 100
        if (n <= 500):
            needMoreNumbers2 = False
    return myList2
进步;-)现在我们至少得到一个包含
n
随机整数的列表。但是,它们不在您想要的范围内:
int(random.random()*500)
返回0到499(包括0到499)范围内的整数。如果您希望它们包含在100到500之间,最好的方法是执行
random.randint(100500)
,其他人已经向您展示了这一点
100+int(random.random()*400)
是一种更接近原始代码的等效方法,因此让我们尝试一下:

import random

def randomNumber2(n):
    myList2 = []
    while len(myList2) < n:
        randomNumber2 = 100 + int(random.random() * 400)
        myList2.append(randomNumber2)
    return myList2

F J给出的答案是,最有经验的Pythonistas会如何编写代码。

提示:让第一个随机数为最小值。在随后的迭代中,如果新的随机数较小,则让该值替换旧的最小值。
n>=n-100
是打字错误吗?您没有修改
n
的值,只是进行比较并忽略结果。这是一种更简单的编码方法。看看我的代码,有没有一种方法可以改变我的代码中的一些东西来产生最小值?+1比我的代码更好地遍历他的代码。不过,我还要提到,在这种情况下,for循环比while循环更可取。是的,for循环肯定更自然。但我想让OP代码尽可能接近他的原始代码,因为这正是他一直要求的;-)如何只显示整个列表中最低的整数?例如,您可以使用
返回最小的
,而不是
返回myList2
import random

def randomNumber2(n):
    myList2 = []
    while len(myList2) < n:
        randomNumber2 = int(random.random() * 500)
        myList2.append(randomNumber2)
    return myList2
import random

def randomNumber2(n):
    myList2 = []
    while len(myList2) < n:
        randomNumber2 = 100 + int(random.random() * 400)
        myList2.append(randomNumber2)
    return myList2
import random

def randomNumber2(n):
    myList2 = []
    smallest = None
    while len(myList2) < n:
        randomNumber2 = 100 + int(random.random() * 400)
        myList2.append(randomNumber2)
        if smallest is None or randomNumber2 < smallest:
            smallest = randomNumber2
    assert smallest == min(myList2)
    return myList2