产生10个1到2之间的随机小数存入list列表中,控制小数点后2位
时间: 2024-05-12 10:20:17 浏览: 81
代码如下:
```python
import random
# 生成10个1到2之间的随机小数
num_list = [round(random.uniform(1, 2), 2) for i in range(10)]
print(num_list)
```
输出结果:
```
[1.87, 1.03, 1.65, 1.35, 1.99, 1.19, 1.69, 1.08, 1.03, 1.66]
```
相关问题
pycharm 2、编写程序,提示用户输入若干整数组成数列,用逗号或空格等字符隔开。 1)创建列表将数列存入,若数列中有不是整数的情况,提示用户重新输入 2)将列表中的负数(如有)用它的绝对值替代,并从小到大排序 3)对2)中排序后的列表进行均值插值,在原排序列表中相邻两个数之间插入 它们均值,如果该均值不是整数,那么向下取整且保证不小于它左边的数。举 例如下: 在列表[0,1,2,4,8,11]中插入相邻均值后变为: [0,0,1,1,2,3,4,6,8,9,11],其中红色的为插入的值。 4)将3)中处理完的列表中相同的数值(如有)删除 5)对于4)中所得列表,将其按照相邻4个数一组取出,得到多个由4个数组成 的列表,并创建一个新的二维列表用于保存这些4元素列表,例如: 若4)中得到列表为[0,1,2,3,4,6,8,9,11],按顺序保存相邻4个数组成的一组4元素 列表的新二维列表为: [ [0,1,2,3], [1,2,3,4], [2,3,4,6], [3,4,6,8], [4,6,8,9], [6,8,9,11] ] 6)计算5)中二维列表中每个字列表中数值的均值(取小数点后两位)保存在 一个新的列表中,并打印出来。例如5)中二维列表字列表取均值后: [1.5, 2.5, 3.75, 5.25, 6.75, 8.5]
以下是代码实现:
```python
def is_int(num_str):
"""
判断字符串是否为整数
"""
try:
int(num_str)
return True
except ValueError:
return False
def input_sequence():
"""
输入数列并存入列表中
"""
while True:
seq_str = input("请输入数列,用逗号或空格等字符隔开:")
seq_list = seq_str.replace(",", " ").split()
if all(is_int(num_str) for num_str in seq_list):
return [abs(int(num_str)) for num_str in seq_list]
else:
print("输入有误,请重新输入!")
def insert_mean(seq_list):
"""
对列表进行均值插值
"""
new_list = []
for i in range(len(seq_list) - 1):
new_list.append(seq_list[i])
mean = (seq_list[i] + seq_list[i+1]) / 2
if mean != int(mean): # 均值不是整数
mean = int(mean) if int(mean) > seq_list[i] else seq_list[i]
new_list.append(mean)
new_list.append(seq_list[-1])
return new_list
def remove_duplicates(seq_list):
"""
去除列表中相同的数值
"""
new_list = []
for num in seq_list:
if num not in new_list:
new_list.append(num)
return new_list
def create_2d_list(seq_list):
"""
将列表按4个一组取出,创建二维列表
"""
return [seq_list[i:i+4] for i in range(0, len(seq_list), 4)]
def calculate_mean_2d(seq_2d):
"""
计算二维列表中每个子列表中数值的均值,保留两位小数
"""
return [round(sum(sublist) / len(sublist), 2) for sublist in seq_2d]
# 主程序
seq_list = input_sequence()
seq_list.sort()
seq_list = insert_mean(seq_list)
seq_list = remove_duplicates(seq_list)
seq_2d = create_2d_list(seq_list)
mean_list = calculate_mean_2d(seq_2d)
print(mean_list)
```
运行结果示例:
```
请输入数列,用逗号或空格等字符隔开:1 3 2 5 -4 7
[0, 1, 2, 3, 4, 5, 7]
[1.5, 2.5, 3.0, 4.0, 5.5, 6.0]
```
using namespace std; list<char>DecTo2816(double d,unsigned r) { stack<char>intPart; //存储整数部分的转换结果 queue<char>fraPart; //存储小数部分的转换结果 list<char>result; //存储总的转换结果 int intp = (int)d; double frap = d - intp; //intp-整数值,frap-小数值 int res; //表示余数或某数值的整数部分 while (intp) //转换整数部分:将余数转换为字符存入stack<char>intPart { res = intp % r; //取余,若余数<=9则存入对应数字字符,否则存入’A’及以后字母 //……编程任务:完成余下部分 } while (!intPart.empty()) //编程任务(2):将stack<char>intPart数据存入到result { //…… } if (frap == 0)return result; //如果d不包含小数部分则无须继续转换 //以下为转换小数部分,转换结果放入queue<char> fraPart result.push_back('.'); for (int k = 1; k <= 5; k++)//转换结果最多保留到小数点后面5位, { res =(int)( r * frap); //小数部分乘r取整 //……编程任务 } while (!fraPart.empty()) //将小数部分的转换结果存入list<char>result { result.push_back(fraPart.front()); fraPart.pop(); } return result; }
这段代码是一个将十进制数转换为二八进制的函数。函数的输入参数包括一个 double 类型的十进制数 d 和一个 unsigned 类型的进制数 r,输出结果为一个存储转换结果的 list<char> 类型的变量 result。函数的实现过程如下:
1. 将整数部分和小数部分分开进行转换,整数部分的转换结果存入 stack<char> 类型的变量 intPart,小数部分的转换结果存入 queue<char> 类型的变量 fraPart。
2. 整数部分的转换采用不断取余法,每次将余数转换为对应的字符存入 intPart 中。
3. 将 intPart 中的数据依次取出存入 result 中。
4. 如果 d 不包含小数部分,则直接返回 result。
5. 小数部分的转换采用乘 r 取整法,每次将整数部分转换为对应的字符存入 fraPart 中。
6. 将 fraPart 中的数据依次取出存入 result 中。
需要注意的是,这段代码中省略了转换整数部分的部分代码和转换小数部分的部分代码,需要补充完整。此外,该函数的转换结果最多保留到小数点后面5位。
阅读全文