我知道之前已经问过这个问题,但是我没有看到任何以不拆分列表的方式回答它.
说我有一个清单:
num = [1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)
我想创建一个函数:
rotate(lst, x):
Run Code Online (Sandbox Code Playgroud)
因此,如果我调用rotate(num, 3)它将全局编辑列表num.那种方式,当我后来打电话print(num)给它将导致[4,5,6,1,2,3].
我明白我可以编写类似的功能:
rotate(lst, x):
return [lst[-x:] + lst[:-x]
Run Code Online (Sandbox Code Playgroud)
但是我需要在没有return语句的情况下执行此函数,并且不需要拆分列表.我正在考虑的工作是将列表的最后一个值放入变量中:q = lst[-1]然后从那里创建一个循环,该循环运行x一定次数,继续将值移向列表末尾并替换第0个位置与存储在q中的任何内容.
还有一件事.如果我打电话rotate(lst, -3)而不是旋转到"右",它将必须旋转到"左".
我是python的新手,并且无法理解这个操作列表的概念.谢谢大家的时间和精力.我希望这个问题足够清楚.
我正在尝试一个项目来编程iRobot.对于这个项目,我有一个部分,我需要这个机器人直行,除非按下碰撞传感器.当按下不同的碰撞传感器时,应该发生不同的事情,然后它应该继续直线移动.这是我到目前为止的代码:
while( ReadBumpSensors() == 0)
{
drive(200, RAD_STRAIGHT);
if ( ReadBumpSensors() == 1 )
{
drive(-200, RAD_STRAIGHT);
delayMs(1000);
drive(200, 1);
delayMs(500);
drive(200, RAD_STRAIGHT);
}
if ( ReadBumpSensors() == 2)
{
drive(-200, RAD_STRAIGHT);
delayMs(1000);
drive(200,-1);
delayMs(500);
drive(200, RAD_STRAIGHT);
}
if ( ReadBumpSensors() == 3)
{
drive(-200, RAD_STRAIGHT);
delayMs(1000);
drive(200,-1);
delayMs(500);
drive(200, RAD_STRAIGHT);
}
}
Run Code Online (Sandbox Code Playgroud)
我没有得到任何错误,但机器人只是直接移动而没有响应任何if语句.我觉得这是某种类型的语法错误,但我不确定.有什么建议?
我正在运行一个while循环,它将使用用户输入的浮点数并将它们添加到一起,直到在输入中放入其他内容.
while(cin >> input)
{
price += input;
cout << "Next price: ";
}
Run Code Online (Sandbox Code Playgroud)
在此之后,我有用户输入他们支付了多少:
cout << "Enter the amount paid: ";
cin >> paid;
cout << "You paid: " << paid << endl;
Run Code Online (Sandbox Code Playgroud)
在运行程序时,循环执行正常,我可以cout正确地得到总价格,但它会跳过该cin >> paid;行并输出为You paid: nan.
我尝试cin.clear()在循环和下一个输入之间放置,但是在运行它时,输出是:You paid: 0
我是否需要更改while循环或使用其他版本来清除输入?我是C++的新手.谢谢!