python3.6编写程序,生成一个包含20个随机整数的列表,要求所有元素不相同,并且每个元素的值介于1~100之间。

本文介绍如何使用Python生成一个包含20个1至100间无重复随机整数的列表,解决随机数生成及去重问题,避免常见错误。

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

python3.6题目要求:

编写程序,生成一个包含20个随机整数的列表,要求所有元素不相同,并且每个元素的值介于1~100之间。

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import random

list_1 = []

#生成20位随机整数列表
for i in range(20):
    list_1.append(random.randint(0,100))
    print(list_1)
    #统计新生成的整数在列表中的数量
    if list_1.count(list_1[i]) > 1:
        #判断生成的是否为最后一个元素
        if i < (20-1):
            print('移除了一个重复元素:',list_1[i])
            #移除重复整数元素
            list_1.pop(i)
            #移除后补加一个随机整数元素
            list_1.append(random.randint(0,100))   
        #移除最后一个重复元素
        else:
            #反复确认移除后生成的元素不再重复
            while True:
                if list_1.count(list_1[i]) > 1:
                    print('移除了最后一个重复元素:',list_1[i])
                    list_1.pop(i)
                    list_1.append(random.randint(0,100))
                else:
                    print(list_1)
                    break

运行代码结果如下:


其实在写这个题目的时候遇到了一点小问题,在这说一下,方便大家参考以及自己以后回来查看。

起初在用 pop(obj) 方法的时候,将obj可变参数写成 list_1[i] ,代码如下:

 list_1.pop(list_1[i])

但运行代码后,一旦出现重复元素,就会报错,报错结果如下:

报错结果显示:“索引超出范围”,不解之时就用 help(list) 函数查了一下,查询结果显示:

  pop(...)
 |      L.pop([index]) -> item -- remove and return item at index (default last).
 |      Raises IndexError if list is empty or index is out of range.

这才发现pop()方法的可变参数是[index],所以赶紧将可变参数改了一下:

list_1.pop(i)

结果可以正常运行了。


*另外,根据查询的help(list)显示:

pop()方法默认的是移除列表中最后一个元素,并返回该元素的值;该方法报错的一般原因为:列表为空或者索引超出范围。

### 回答1: 可以使用Python语言编写程序,使用random模块生成随机数,使用set数据结构去重,最终生成一个长度为20列表。 具体代码如下: ```python import random # 生成20随机数 nums = set() while len(nums) < 20: nums.add(random.randint(1, 100)) # 转换为列表并输出 result = list(nums) print(result) ``` 运行结果如下: ``` [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 19, 21, 22, 24] ``` ### 回答2: 要生成一个含有20随机数列表并满足要求,可以采取以下步骤: 1. 导入random模块:在Python中,random模块可以帮助我们生成随机数。 2. 创建一个列表,用来存储随机数3. 使用while循环,生成随机数,如果随机数列表中,则将其添加到列表中,并继续生成一个随机数,直到列表长度达到20。 4. 最后,将列表打印出来,检查每个元素是否满足要求。 下面是完整的Python代码: ```python import random lst = [] while len(lst) < 20: n = random.randint(1, 100) if n not in lst: lst.append(n) print(lst) ``` 这段代码先创建了一个列表lst,然后使用while循环来生成随机数,具体过程如下: - 用random.randint(1, 100)函数生成一个1100之间随机整数n。 - 如果n在lst列表中,使用lst.append(n)将其添加到列表中。 - 如果n已经在lst中,说明有重复元素执行任何操作,继续生成一个随机数。 当列表长度达到20时,while循环停止,最后将lst打印出来。 这段程序生成随机数列表满足要求:每个元素1100之间,且所有元素相同。 ### 回答3编写程序要求生成一个含有20随机数列表并且每个元素1100之间。实现这个要求的算法可以使用列表和循环来生成随机数并检查它是否与前面产生的随机数重复,如果重复则重新生成。 具体实现步骤如下: 1. 导入Python中的random库,用于生成随机数。 2. 定义一个列表,用于存储生成随机数3. 使用while循环生成20随机数,在循环内部进行以下操作: a. 生成一个随机数,使用random库的randint函数生成1100之间整数。 b. 判断该随机数是否已经在列表中出现过,如果已经出现则重新生成一个随机数,直到生成随机数再出现为止。 c.生成随机数添加到列表中。 4. 输出生成列表。 实现代码如下: ```python import random nums = [] # 定义一个列表用于存储随机数 while len(nums) < 20: # 生成20随机数 num = random.randint(1, 100) # 生成1100之间整数 if num not in nums: # 避免重复 nums.append(num) # 添加到列表中 print(nums) # 输出生成列表 ``` 运行结果如下: ```python [99, 1, 73, 32, 90, 79, 46, 68, 27, 97, 54, 77, 10, 6, 29, 33, 58, 49, 11, 71] ``` 该程序生成20同的随机数每个数都在1100之间。可以通过多次运行程序来验证生成随机数重复,符合要求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值