写一个程序,输入N就产生N条双色球号码

本文介绍了一种使用Python生成双色球随机号码的方法,确保红球不重复且按升序排列,蓝球随机选择,最终将结果写入文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

具体需求:

红球  6     01-33

蓝球  1     01-16

产生的双色球号码不能重复,写到一个文件里面,每一行是一条,格式:

红球: 01 03 05 07 08 18  蓝球:16

红球需要排序,是升序

以下是实现过程:

import random
def balls(n):
    f = open('balls', 'a+', encoding='utf-8')
    for i in range(n):
        ball = []
        red_balls = set()
        while True:
            red_balls.add(str(random.randint(1, 33)).zfill(2))
            if len(red_balls) == 6:
                break
        red_list = list(red_balls)
        red_list.sort()
        ball.append('红球:')
        ball.append(' '.join(red_list))
        ball.append(' ')
        ball.append('篮球:')
        ball.append(str(random.randint(1, 16)).zfill(2))
        ball.append('\n')
        f.writelines(ball)
    f.close()


balls(6)

在写的过程中踩了几个坑,现在来细数下:

1,red_list.sort()是对原列表进行排序,执行完之后red_list的顺序已经发生变化,函数返回None,之前把red_list.sort()赋值给一个新列表,导致新列表一直是None。

2,因为数据格式要求红球在前,篮球在后,所以每行数据内容也要求有顺序,所以使用列表存放每行的数据。

3,在写入文件时,一开始写入所有数据组成的大列表,结果报错:TypeError: write() argument must be str, not list,这是因为writelines()只能传入字符串或者传入一个字符序列,并将该字符序列写入文件,即可以传入字符串,列表,元组,集合形式的字符序列,但是序列内不能包括整数或者其他类型的数据,只能是字符串,如传入[1,2,2,3]会报错TypeError: write() argument must be str, not int,如果传入字典,写入的内容是所有的key值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值