编程模拟剪刀、石头和布游戏。游戏规则为:剪刀剪纸,石头砸剪刀,布包石头。玩游戏者从键盘输入s(表示剪刀)或r(表示石头)或p(表示布),要求两个游戏者交替输入,计算机给出输赢的信息。

#include<iostream>

using namespace std;

int main()

{
	char a, b;
	cout << "please the player A input" << endl;
	cin >> a ;
	cout << "please the player B input" << endl;
	cin >> b;

	if (a - b)
		switch (a - b)
		{
		case 1:	cout << "The winner is B" << endl; break;
		case 3:	cout << "The winner is A" << endl; break;
		case -1:cout << "The winner is A" << endl; break;
		case 2:	cout << "The winner is B" << endl; break;
		case -3:cout << "The winner is B" << endl; break;
		case -2:cout << "The winner is A" << endl; break;
		}
	else 
		cout << "平局" << endl;	
	return 0;	
}

### 解决方案 当使用 `np.cross` 函数处理二维向量数组时,可能会遇到与数据类型相关的弃用警告(DeprecationWarning)。这是因为 NumPy 1.20 版本之后,某些类型的别名(如 `np.float` 和 `np.bool`)已被标记为废弃[^2]。为了消除这些警告并确保代码在未来版本中的兼容性,可以采取以下方法: #### 方法一:显式指定数据类型 如果输入的二维向量数组默认使用的是旧版的数据类型(如 `np.float`),可以通过将其转换为推荐使用的标准浮点数类型来解决问题。以下是修改后的代码示例: ```python import numpy as np # 创建两个二维向量数组 vectors_a = np.array([[1, 2], [3, 4]], dtype=np.float64) vectors_b = np.array([[5, 6], [7, 8]], dtype=np.float64) # 计算叉积 result = np.cross(vectors_a, vectors_b) print(result) ``` 通过将 `dtype` 设置为 `np.float64`,可以避免因使用已废弃的 `np.float` 别名而引发的警告。 --- #### 方法二:扩展到三维空间计算 由于 `np.cross` 的设计初衷是为了支持更高维度的空间操作,在处理二维向量时可能需要额外补充第三个分量作为零值,从而模拟三维向量的行为。这样不仅可以规避潜在的警告问题,还能保持函数的一致性和通用性。具体实现如下所示: ```python import numpy as np # 扩展二维向量至三维形式 (z轴设为0) def extend_to_3d(vecs): return np.hstack((vecs, np.zeros((vecs.shape[0], 1), dtype=vecs.dtype))) vectors_a = np.array([[1, 2], [3, 4]]) vectors_b = np.array([[5, 6], [7, 8]]) vectors_a_3d = extend_to_3d(vectors_a) vectors_b_3d = extend_to_3d(vectors_b) # 使用改进后的三维表示执行交叉乘法运算 cross_result = np.cross(vectors_a_3d, vectors_b_3d) # 提取最终结果的有效部分(即 z 轴方向上的数值) final_results = cross_result[:, -1] print(final_results) ``` 上述代码片段展示了如何利用辅助函数 `extend_to_3d()` 将原始二维向量扩充成适合于 `np.cross` 处理的形式,并从中提取所需的第三维坐标作为实际的结果输出[^4]。 --- #### 注意事项 - 如果项目依赖较新的库版本,则建议升级整个开发环境以匹配最新 API 变更需求。 - 对于大规模生产环境中运行的应用程序而言,务必测试任何更改对其它模块功能的影响程度。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

star marks

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值