我正在研究机器人的软件,它通常在Raspberry Pi上运行.让我们考虑两个文件的导入:
motor.py (运行电机):
from RPi import GPIO as gpio
Run Code Online (Sandbox Code Playgroud)
和client.py(与服务器通信并将命令传递给电机):
from rpi.motor import Motor
Run Code Online (Sandbox Code Playgroud)
这两个文件都在一个名为的目录中rpi,其中包含a __init__.py和a __main__.py.该RPi软件包无法安装在非RPi设备上.但是,我仍然想测试它的功能client.py.
import unittest
from unittest import mock
# Location A
class TestClient(unittest.TestCase):
# Location B
setUp(self):
# Location C
pass
Run Code Online (Sandbox Code Playgroud)
最初,我尝试from rpi.client import Client了LocA,但是失败了,因为它试图导入Motor,然后从RPi导入GPIO,这是不存在的.我也尝试mock.patch("rpi.client.Motor")过LocB(包括在LocC mock_motor之后添加self,并Client在LocC中导入,但也失败了.我也尝试RPi在LocA上进行模拟,但它也没有用.
你如何模拟你的系统上没有安装的库?
在 Sympy 中,如何隔离通用变量?
我可以这样做,例如:
>>> import sympy as sm
>>> P, rho, g, h = sm.symbols("P rho g h")
>>> depth = sm.Eq(P, rho*g*h)
>>> sm.solve(depth, h)
[P/(g*rho)]
Run Code Online (Sandbox Code Playgroud)
但不是这个:
>>> T, a, mu = sm.symbols("T a mu")
>>> kepler3 = sm.Eq(T, 2*sm.pi*sm.sqrt(a**3 / mu))
>>> solve(kepler3, a)
[2**(1/3)*(T**2*mu)**(1/3)/(2*pi**(2/3)),
2**(1/3)*(T**2*mu)**(1/3)*(-1 + sqrt(3)*I)/(4*pi**(2/3)),
-2**(1/3)*(T**2*mu)**(1/3)*(1 + sqrt(3)*I)/(4*pi**(2/3))]
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种自动生成的方法:sm.root(mu*T**2/(4*sm.pi**2), 3),从技术上讲,这是第一个输出。
不过,Solve 找到了根,而不是用给定变量来写它。
假设我有这些数据:
>>> df = pd.DataFrame(data={"age": [11, 12, 11, 11, 13, 11, 12, 11],
"response": ["Yes", "No", "Yes", "Yes", "Yes", "No", "Yes", "Yes"]})
>>> df
age response
0 11 Yes
1 12 No
2 11 Yes
3 11 Yes
4 13 Yes
5 11 No
6 12 Yes
7 11 Yes
Run Code Online (Sandbox Code Playgroud)
我想制作一个条形图,显示按年龄汇总的是或否答案.有可能吗?我曾尝试hist和kind=bar,但也能按年龄排序,而不是绘图年龄和响应分开.
它看起来像这样:
^
4 | o
3 | o
2 | o
1 | ox ox o
0 .----------------------->
11 12 13
Run Code Online (Sandbox Code Playgroud)
o"是" 在哪里,x …
python ×3
matplotlib ×1
mocking ×1
pandas ×1
python-3.x ×1
seaborn ×1
sympy ×1
unit-testing ×1