【python】index函数

文章目录

1. Main

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        # 遍历列表
        for i in range(len(nums)):
            # 计算需要找到的下一个目标数字residue
            res = target - nums[i]
            if res in nums[i+1:]:
                return [i,nums[i+1:].index(res)+i+1]

2. Note

.index() 表示出在数列中的位置

彩蛋

与上文无关

import sys
import math
 
# 初始化输入列表
posAList = []
posBList = []
alphaList = []
 
# 读取输入
lineNum = 0
for line in sys.stdin:
    if lineNum == 0:
        T = int(line)
    else:
        a = line.split()
        posA = [int(a[0]), int(a[1])]
        posB = [int(a[2]), int(a[3])]
        alpha = int(a[4])
        posAList.append(posA)
        posBList.append(posB)
        alphaList.append(alpha)
    lineNum += 1
 
# 定义计算夹角的函数(角度制)
def calAngle(posA, posB, posC):
    xA, yA = posA
    xB, yB = posB
    xC, yC = posC
    xCA = xA - xC
    yCA = yA - yC
    xCB = xB - xC
    yCB = yB - yC
    CA_dot_CB = xCA * xCB + yCA * yCB
    CA_mol = math.sqrt(xCA**2 + yCA**2)
    CB_mol = math.sqrt(xCB**2 + yCB**2)
    beta = math.acos(CA_dot_CB / (CA_mol * CB_mol))
    beta = beta / math.pi
    beta = beta * 180
 
    return beta
     
# 定义求解函数
def solve(posA, posB, alpha):
    # 读取A和B的坐标
    xA, yA = posA
    xB, yB = posB
 
    # 计算AB连线的向量
    xAB = xB - xA
    yAB = yB - yA
     
    # 计算垂直于AB连线的向量
    xP = -yAB
    yP = xAB
     
    # 计算AB连线的中点
    xO = (xA + xB) / 2
    yO = (yA + yB) / 2
     
    # 初始化试探参数k
    k = 1
     
    # 初始化C的坐标
    xC = xO + xP * k
    yC = yO + yP * k
     
    # 计算初始时期的夹角
    beta = calAngle([xA, yA], [xB, yB], [xC, yC])
    diff = abs(beta - alpha)
    last_diff = diff
     
    # 开始试探
    while diff / alpha >= 1e-6:
        # 如果夹角变大了,说明应该往反方向试探
        if diff >= last_diff:
            k = -0.5 * k
        # 否则,加大步伐
        else:
            k = 1.1 * k
        # 下一步的试探
        xC = xC + xP * k
        yC = yC + yP * k
        # 计算新的夹角
        last_diff = diff
        beta = calAngle([xA, yA], [xB, yB], [xC, yC])
        diff = abs(beta - alpha)
         
    # 试探结束后,打印答案
    print("%f %f" % (xC, yC))
 
# 解答
for posA, posB, alpha in zip(posAList, posBList, alphaList):
    solve(posA, posB, alpha)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猛码Memmat

欢迎支持,随缘打赏 ~

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

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

打赏作者

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

抵扣说明:

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

余额充值