先用numpy生成10个随机点的坐标,计算p点(2,3) 和其中第几个点的距离最远, 将该点的序号保存在idx变量中。用散点图将所有点绘制出来,其中p点用红色,距p点最远的点用绿色。然后用列表生成式将lst=['abc', 'def', 'ghi', 'jkl', 'lmn']列表中的字符串都转为大写,得到列表 lst2。然后用列表生成式产生形如 lst=[(1,1),(1,2),..(1,5),(2,1),...(2,5),..(5,1),(5,2),...(5,5)] 的列表。然后用列表生成式将lst列表其中的正数筛选出来存在 pos 列表中。然后用列表生成式产生二维列表 lst,要求第一行为1,11,111,1111,第二行为2,22,222,2222以此类推直到第五行。然后求2~30以内的所有毕达哥拉斯三元组,即寻找(a,b,c)为整数且满足 要求1<a<b<c<30。所有元组保存在 lst 列表中。然后编写输出月历的函数calendar(year, month),只输出2023年5月日期。
时间: 2023-06-20 08:05:20 浏览: 152
好的,我来分别回答您的问题。
1. 生成随机点并计算距离最远的点
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成随机点坐标
points = np.random.rand(10, 2)
# 计算距离
p = np.array([2, 3])
distances = np.sqrt(np.sum((points - p) ** 2, axis=1))
# 寻找距离最远的点
idx = np.argmax(distances)
# 绘制散点图
plt.scatter(points[:, 0], points[:, 1])
plt.scatter(points[idx, 0], points[idx, 1], color='green')
plt.scatter(p[0], p[1], color='red')
plt.show()
print("距离最远的点为第%d个点" % (idx+1))
```
2. 将列表中的字符串转为大写
```python
lst = ['abc', 'def', 'ghi', 'jkl', 'lmn']
lst2 = [s.upper() for s in lst]
print(lst2)
```
3. 生成形如 lst=[(1,1),(1,2),..(1,5),(2,1),...(2,5),..(5,1),(5,2),...(5,5)] 的列表
```python
lst = [(i, j) for i in range(1, 6) for j in range(1, 6)]
print(lst)
```
4. 筛选正数并保存到 pos 列表中
```python
lst = [-3, -2, -1, 0, 1, 2, 3]
pos = [x for x in lst if x > 0]
print(pos)
```
5. 生成二维列表
```python
lst = [[10 ** i + j for j in range(1, 5)] for i in range(4)]
for row in lst:
print(row)
```
6. 寻找2~30以内的所有毕达哥拉斯三元组
```python
lst = []
for a in range(1, 30):
for b in range(a+1, 30):
for c in range(b+1, 30):
if a ** 2 + b ** 2 == c ** 2:
lst.append((a, b, c))
print(lst)
```
7. 输出2023年5月的月历
```python
import calendar
def calendar(year, month):
cal = calendar.monthcalendar(year, month)
print("Mo Tu We Th Fr Sa Su")
for week in cal:
for day in week:
if day == 0:
print(" ", end="")
else:
print("%2d" % day, end="")
print(" ", end="")
print("")
calendar(2023, 5)
```
以上是我给出的解答,希望能对您有所帮助。
阅读全文