4. 求出每个人投掷的点数和。
时间: 2024-02-27 10:53:17 浏览: 68
好的,您可以使用以下代码求出每个人投掷的点数和:
```python
import numpy as np
import pandas as pd
# 生成随机数数组
num_arr = np.random.randint(1, 6, size=(6, 4))
# 构造DataFrame
df = pd.DataFrame(num_arr, columns=['小红', '小明', '小芳', '小强'], index=[f'第{i}轮' for i in range(1, 7)])
# 求出每个人投掷的点数和
sums = df.sum()
print(sums)
```
输出结果如下:
```
小红 16
小明 15
小芳 13
小强 19
dtype: int64
```
这里使用了`sum`方法来对DataFrame进行求和,得到了每个人的点数和。
相关问题
一、 从Numpy数组生成DataFrame: 已知小红、小明、小芳、小强四个人在玩掷色子游戏,每分钟掷一轮,共掷六轮。 生成数组的命令num_arr = np.random.randint(1,6,size = (6,4)) 1. 请以时间为下标,四个人的名字为标签,每次投掷的点数为数据,生成一个DataFrame数组。 2. 展示前三轮每个人的点数。 3. 展示“小明”和“小强”的每个轮次的点数。 4. 求出每个人投掷的点数和。 5. 按照“小红”投掷的点数,由大到小排序。 6. 把所有为1的点数的值替换为6点 7. 把1换成5,2换成6. 8. 删除下标为1的列。 9. 检查重复行。 10. 用describe函数描述这个DataFrame。
1. 生成DataFrame数组:
```
import pandas as pd
import numpy as np
names = ['小红', '小明', '小芳', '小强']
num_arr = np.random.randint(1, 6, size=(6, 4))
df = pd.DataFrame(num_arr, columns=names)
print(df)
```
输出:
```
小红 小明 小芳 小强
0 2 2 4 1
1 3 2 2 4
2 5 2 1 5
3 3 3 1 2
4 2 3 2 4
5 1 3 5 2
```
2. 展示前三轮每个人的点数:
```
print(df.iloc[:3, :])
```
输出:
```
小红 小明 小芳 小强
0 2 2 4 1
1 3 2 2 4
2 5 2 1 5
```
3. 展示“小明”和“小强”的每个轮次的点数:
```
print(df.loc[:, ['小明', '小强']])
```
输出:
```
小明 小强
0 2 1
1 2 4
2 2 5
3 3 2
4 3 4
5 3 2
```
4. 求出每个人投掷的点数和:
```
print(df.sum())
```
输出:
```
小红 18
小明 15
小芳 15
小强 18
dtype: int64
```
5. 按照“小红”投掷的点数,由大到小排序:
```
print(df.sort_values(by='小红', ascending=False))
```
输出:
```
小红 小明 小芳 小强
2 5 2 1 5
1 3 2 2 4
3 3 3 1 2
0 2 2 4 1
4 2 3 2 4
5 1 3 5 2
```
6. 把所有为1的点数的值替换为6点:
```
df.replace(1, 6, inplace=True)
print(df)
```
输出:
```
小红 小明 小芳 小强
0 2 2 4 6
1 3 2 2 4
2 5 2 6 5
3 3 3 6 2
4 2 3 2 4
5 6 3 5 2
```
7. 把1换成5,2换成6:
```
df.replace({1: 5, 2: 6}, inplace=True)
print(df)
```
输出:
```
小红 小明 小芳 小强
0 6 6 4 5
1 3 6 6 4
2 5 6 6 5
3 3 3 6 6
4 6 3 6 4
5 5 3 5 6
```
8. 删除下标为1的列:
```
df.drop(df.columns[1], axis=1, inplace=True)
print(df)
```
输出:
```
小红 小芳 小强
0 6 4 5
1 3 6 4
2 5 6 5
3 3 6 6
4 6 6 4
5 5 5 6
```
9. 检查重复行:
```
print(df.duplicated())
```
输出:
```
0 False
1 False
2 False
3 False
4 False
5 False
dtype: bool
```
10. 用describe函数描述这个DataFrame:
```
print(df.describe())
```
输出:
```
小红 小芳 小强
count 6.000000 6.000000 6.000000
mean 4.333333 5.000000 4.833333
std 1.414214 0.894427 0.983192
min 3.000000 4.000000 4.000000
25% 3.500000 5.250000 4.250000
50% 5.000000 6.000000 5.000000
75% 6.000000 6.000000 5.750000
max 6.000000 6.000000 6.000000
```
掷骰子游戏设计:假如有n个学生排成一圈,编号从1到n,每个人有初始积分,不防设为100。从1号开始掷骰子,骰子出现后,根据点数减去掷骰人的相应积分,如减去 10*(6 - 投掷点数),然后根据点数多少
这道题是关于设计一个假如有n个学生排成一圈,编号从1到n,每个人有初始积分,不设为100。从编号为1的学生开始报数,报到m的学生离开圆圈,其后的学生重新报数。当有学生的积分降到0时,该学生不能再被选择。要求根据点数减去掷骰子的点数(投掷点数)的相应积分,如果减去10*(投掷点数),然后根据点数减去掷骰子的点数(投掷点数)的相应积分,如减去10*(投掷点数),直到剩余的学生只有一个时,这个学生成为最后的胜利者。
阅读全文