微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计算射弹运动时,Python函数的列表索引超出范围

如何解决计算射弹运动时,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 举报,一经查实,本站将立刻删除。