-1

我有一些有效的代码。问题是,输出数字不按顺序排列。我查看了 sorted() 函数并相信这是我需要使用的,但是当我使用它时,它说 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()))

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

谢谢

4

3 回答 3

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 个“新鲜”随机数,按每行排序。

于 2013-07-02T08:35:12.890 回答
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))
于 2013-07-02T09:02:26.483 回答
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删除重复值。

于 2013-07-02T09:11:24.193 回答