将所有可能结果的概念与多边形内的角度(和边)数相关联
Relating The Concept of All Possible Outcomes With Number of Angles (& Sides) Within a Polygon
我试图找到给定形状中所有可能的角度和边。然而,我正在挣扎。这是我的代码的开始。
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)
现在我要做的是让计算机根据用户的输入计算出所有不同的角度和边。
因此,如果他们为 ShapeName 输入 SidesNumber 和 ABC,我希望计算机找到所有的角度和边,或者换句话说,所有可能的结果。所以角应该是∠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)
不过对我来说好像没什么用。
我不确定我是否完全按照你对你正在尝试做的事情的描述,但认为这些产生结果的例子可能会有所帮助:
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, particularly the Naming Conventions 部分。
我试图找到给定形状中所有可能的角度和边。然而,我正在挣扎。这是我的代码的开始。
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)
现在我要做的是让计算机根据用户的输入计算出所有不同的角度和边。 因此,如果他们为 ShapeName 输入 SidesNumber 和 ABC,我希望计算机找到所有的角度和边,或者换句话说,所有可能的结果。所以角应该是∠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)
不过对我来说好像没什么用。
我不确定我是否完全按照你对你正在尝试做的事情的描述,但认为这些产生结果的例子可能会有所帮助:
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, particularly the Naming Conventions 部分。