如何解决计算射弹运动时,Python函数的列表索引超出范围
我在编写一些关于弹丸运动的python代码时遇到了一些麻烦,并且遇到了这个小时,并且不确定如何解决它。我是一名Python业余爱好者,所以请以我的知识不足来裸露。错误发生在
public ActionResult RedisCache()
{
ViewBag.Message = "A simple example with Azure Cache for Redis on ASP.NET.";
var lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
{
string cacheConnection = _configuration.GetSection("CacheConnection").Value;
return ConnectionMultiplexer.Connect(cacheConnection);
});
// Connection refers to a property that returns a ConnectionMultiplexer
// as shown in the prevIoUs example.
IDatabase cache = lazyConnection.Value.GetDatabase();
// Perform cache operations using the cache object...
string original = "Here is some data to encrypt!";
string guid = Guid.NewGuid().ToString();
byte[] myRijndaelKey;
byte[] myRijndaelIV;
using (RijndaelManaged myRijndael = new RijndaelManaged())
{
myRijndael.GenerateKey();
myRijndael.GenerateIV();
myRijndaelKey = myRijndael.Key;
myRijndaelIV = myRijndael.IV;
}
byte[] encrypted_original = EncryptandDecrypt.EncryptStringToBytes(original,myRijndaelKey,myRijndaelIV);
ViewBag.command6 = original;
ViewBag.command6Result = encrypted_original;
//set orginal data
cache.StringSet(guid,encrypted_original);
//set key and iv
cache.StringSet(guid+"Key",myRijndaelKey);
cache.StringSet(guid+"IV",myRijndaelIV);
//get data from redis
byte[] get_encrypted_originalByte = (byte[])cache.StringGet(guid);
byte[] get_Key = (byte[])cache.StringGet(guid+"Key");
byte[] get_IV = (byte[])cache.StringGet(guid+"IV");
string decrypted_originalString = EncryptandDecrypt.DecryptStringFromBytes(get_encrypted_originalByte,get_Key,get_IV);
ViewBag.command7 = "Get From Redis:"+ get_encrypted_originalByte;
ViewBag.command7Result = "decrypted data:" + decrypted_originalString;
lazyConnection.Value.dispose();
return View();
}
,但我认为它也会在下面的行中继续。我收到的错误为“ IndexError:列表索引超出范围”。
当前的任务是创建一个函数,计算铁饼的轨迹,同时包括抬起和拖动,然后将其绘制在一组轴上。代码如下:
vx.append(vx[counter]+dt*ax[counter])
任何帮助将不胜感激。 TIA非常好!
解决方法
在代码中,您正在代码的开头定义一些关键变量的值。
vx = [V*np.cos(ang/180*pi)] # velocity in x direction upon release
vy = [V*np.sin(ang/180*pi)] # velocity in y direction upon release
x = [0] # original x position
y = [1.8] # original y position
稍后,您将定义功能。然后,您要重置这些关键变量的值。
# Lists for results
x = []
y = []
vx = []
vy = []
然后,您尝试引用列表,但是列表中没有任何内容可供引用。
counter = 0
while (y[counter] >= 0):
t.append(t[counter]+dt)
#Update Velocity
vx.append(vx[counter]+dt*ax[counter])
vy.append(vy[counter]+dt*ay[counter])
由于y [0]不存在,while循环将失败。
这是您的代码将尝试执行的方式。如您所见,它会引发错误。
建议将注释掉重置x,y,vx,vy值的代码行
>>> y = []
>>> while y[0] >=0:
print ('got in')
break
Traceback (most recent call last):
File "<pyshell#6>",line 1,in <module>
while y[0] >=0:
IndexError: list index out of range
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。