生成随机数列表,然后对它们进行排序

时间:2015-04-20 11:21:13

标签: python sorting

python的新手,理解一个小程序的逻辑,但有点卡住了。这就是我想要做的事情。

我希望程序生成5个随机数,然后使用冒泡排序按顺序对它们进行排序。然后,用户需要以任何顺序输入5个数字,程序将说明它是否在那里。

这是我到目前为止所做的事情。

import random

def randomNum()
    list = []
    list.append(random.sample(range(1, 100), 5))
    print list

python的第一天,所以我在语法方面搞砸了一点,但最初看不出数字生成函数的错误。

然后,这就是我要冒泡的那种做法。

def bubble(list):
    length = len(list) - 1
    unsorted = True
    while unsorted:
        unsorted = False
        for element in range(0,length):
            #unsorted = False
            if badList[element] > list[element + 1]:
                 hold = list[element + 1]
                 list[element + 1] = list[element]
                 list[element] = hold
                 unsorted = True
                 print list
             else:
                 unsorted = True

     return list

之后,我不确定如何获取输入并进行比较以查看它是否在该列表中。这是我到目前为止所拥有的。

任何指针?

2 个答案:

答案 0 :(得分:0)

如何获得输入

使用raw_input()(Python 2)或input()(Python 3)。切勿在Python 2中使用input(),因为这是一个严重的安全问题。

通用解决方案

如果您正在编写一个使用用户输入的模块并且要与两个Python版本一起使用,那么您可以使用Python的try ... except机制

try:
    input = raw_input
except NameError:
    pass
...
answer = input('Which is smaller, 3 or 4? ')

输入治疗

请注意,input()会返回string,即一系列字符,因此如果您需要以下数字值,可能需要进一步处理answer计算 <击>

<击>
answer = input('Which is smaller, 3 or 4? ')
min_squared = answer**2

<击>

answer = input('Which is smaller, 3 or 4? ')
answer = int(answer)
min_squared = answer**2

为此目的,您使用int()内置(如上例所示)或float()(如果需要浮点数)。

如何检查包含

如果要检查容器中是否包含元素,则应使用in运算符

 if 4 in [1,2,3,4,5]: print('Found!')
 ...
 if int(answer) in sorted_list:
     print('You win!')

警告

Python为您提供了不同类型的容器,list tuple&#39 {s} dictset&#39 ; S。其中一些针对测试包含进行了优化(即dictset&#39; s),而其他一些必须逐个元素进行扫描,以检查是否包含。< / p>

虽然此问题与您的案例无关,但如果您必须检查是否包含针对数百万项目列表的数千个项目,则使用set而不是list作为容器导致更好,更好的表现。

答案 1 :(得分:0)

首先,我想向您展示完整的代码,稍后我会发表评论:

import random


def randomNum():
    return random.sample(range(1, 100), 5)

numbers_list = randomNum()
# print numbers_list

for _ in xrange(5):
    num = int(raw_input())
    if num in numbers_list:
        print "%d is in the list" % num
    else:
        print "There is no %d in the list" % num

现在一步一步:

1

def randomNum():
    return random.sample(range(1, 100), 5)

在这里,我们创建5个随机数的列表,然后将其返回(稍后我们将需要它,因此我们使用return代替print)。 random.sample是列表本身所以我们不需要在任何地方附加它,因为我们将有[[1,2,3]]这样的结构,它不是我们想要的。

2

numbers_list = randomNum()
# print numbers_list

在这里,我们创建一个由randomNum()

生成的随机数列表

3

for _ in xrange(5):
    num = int(raw_input())
    if num in numbers_list:
        print "%d is in the list" % num
    else:
        print "There is no %d in the list" % num

我们取5次用户号码并检查它是否在列表中。我们使用in。我认为很容易理解in的作用。如果在列表中为num,则打印num is in the list,否则我们会打印num isn't in the list

5

我们不在这里使用sort,因为in不需要对列表进行洗牌。