将所有可能结果的概念与多边形内的角度(边)数联系起来

2024-06-02 22:13:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在给定的形状中找到所有可能的角度和侧面。然而,我在挣扎。这是我代码的开始。你知道吗

SidesNumber = int(input("How many sides does your shape have: "))
SidesNumber = str(SidesNumber)
ShapeName = input("What is your shape's name. Please enter "+ SidesNumber +" letters: ")
SidesNumber = int(SidesNumber)
while (len(ShapeName) != SidesNumber) or(not ShapeName.isalpha()):
    if (len(ShapeName) != SidesNumber) and(not ShapeName.isalpha()):
        print("Your input does not match the number of vertices your shape has and does not consist of only letters!") 
        SidesNumber = str(SidesNumber)
        ShapeName = input("What is your shape's name. Please enter "+ SidesNumber +" letters: ")
        SidesNumber = int(SidesNumber)
    elif len(ShapeName) != SidesNumber:
        print("Your input does not match the number of vertices your shape has!")
        SidesNumber = str(SidesNumber)
        ShapeName = input("What is your shape's name. Please enter "+ SidesNumber +" letters: ")
        SidesNumber = int(SidesNumber)
    elif not ShapeName.isalpha():
        print("Your input does not consist of letters only!")
        SidesNumber = str(SidesNumber)
        ShapeName = input("What is your shape's name. Please enter "+ SidesNumber +" letters: ")
        SidesNumber = int(SidesNumber)

现在我要做的是让计算机根据用户的输入计算出所有不同的角度和侧面。 因此,如果他们输入SidesNumber和ABC作为ShapeName,我希望计算机能找到所有的角度和边,或者所有可能的结果。因此角度应为∠ABC,∠ACB,∠BAC。两边应该是AB,BC,AC

此外,我希望这些结果保存在不同的变量中,比如side1 = 'AB'side2 ='BC'side3 = 'AC'。对于像angle1 = '∠ABC'angle1 = '∠ACB'angle1 = '∠BAC'这样的角度

我已经知道了这个代码:

import itertools
dataset = ['1','2','3A','4']
var = list(itertools.combinations(dataset, 3))
print(var)

但对我来说似乎没用。你知道吗


Tags: nameinputyourisnotwhatint角度
1条回答
网友
1楼 · 发布于 2024-06-02 22:13:36

我不确定我是否完全按照你的描述去做,但我认为这些产生结果的例子可能会有所帮助:

def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = [iter(iterable) for _ in range(2)]
    next(b, None)
    return zip(a, b)

# hardcode a name for non-interactive testing
shape_name = 'ABC'

sides = [''.join(pair) for pair in pairwise(shape_name + shape_name[0])]
print('sides: {}'.format(sides))

def angle_name(shape_name, side):
    this = shape_name.index(side[-1])  # index of letter for end of this segment
    try:
        nx = shape_name[this+1]  # get letter for next segment
    except IndexError:
        nx = shape_name[0]  # wrap around

    return '∠'+side+nx

angles = [angle_name(shape_name, side) for side in sides]
print('angles: {}'.format(angles))

输出:

sides: ['AB', 'BC', 'CA']
angles: ['∠ABC', '∠BCA', '∠CAB']

无论如何,我也强烈建议您阅读并开始关注PEP 8 - Style Guide for Python Code,特别是Naming Conventions部分。你知道吗

相关问题 更多 >