排序函数需要4个参数?

时间:2013-07-02 08:34:00

标签: python

我有一些有效的代码。问题是,输出数字不符合规定。我查看了sorted()函数并相信这是我需要使用的,但是当我使用它时,它表示已排序只能有4个参数,我有6-7。

print "Random numbers are: "
for _ in xrange(10):
   print rn(),rn(), rn(), rn(), rn(), rn(), rn() 


with open('Output.txt', 'w') as f:
    f.write("Random numbers are: \n")
    for _ in xrange(500):
        f.write("%s,%s,%s,%s,%s,%s\n" % (rn(), rn(), rn(), rn(), rn(), rn()))

如何在保持与此格式相同的格式下对输出进行排序?

谢谢

3 个答案:

答案 0 :(得分:3)

将数字放在一个序列中,这是sorted()的工作原理:

s = sorted([rn(), rn(), rn(), rn(), rn(), rn()])

然后在写作时从s中选择值:

f.write("%d,%d,%d,%d,%d,%d\n" % tuple(s))

请注意,由于s包含数字,因此格式应该为%d,如图所示,而不是%s,这是字符串。

把它放在一起,你的程序应该是这样的:

with open('Output.txt', 'w') as f:
f.write("Random numbers are: \n")
for _ in xrange(500):
    s = sorted([rn(), rn(), rn(), rn(), rn(), rn()])
    f.write("%d,%d,%d,%d,%d,%d\n" % tuple(s))

假设rn()函数返回一个随机数,这应该给你500行6“新鲜”随机数,每行排序。

答案 1 :(得分:0)

试试这个:

from random import randint

def rn():
    return randint(1,49)

with open('Output.txt', 'w') as f:
    f.write("Random numbers are: \n")
    for _ in xrange(10):
        s = sorted(rn() for _ in xrange(6))
        f.write("{},{},{},{},{},{}\n".format(*s))

答案 2 :(得分:0)

我会使用列表进行排序。

创建一个列表,对其进行排序,格式化。

import random

def get_numbers():
    return sorted([random.randint(1, 49) for _ in xrange(6)])

with open('Output.txt', 'w') as f:
    f.write("Random numbers are: \n")
    for _ in xrange(10):
        f.write(','.join(map(str, get_numbers())) + '\n')

现在您可以向get_numbers添加更多逻辑,例如删除重复值。