具有顶点、边和面的字符串的for循环

2024-09-30 00:27:15 发布

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

complex = {1},{2},{3}, {1,2},{1,3},{2,3},{1,2,3} this is my string.

我想创建一个循环,让我说,好的,这有

vertices = 3
edges =3
faces =1

我可以用条件语句来实现“特定”结构。但我想让它给我无论多少顶点,边和面,我输入,以便它将正确计算。 我的问题是如何处理这个问题。这有两个循环,对吗?我只知道怎么指挥。你知道吗

我能做的只有代码。请帮忙。我对Python还不熟悉。你知道吗

def nsimplex(vertices, edges, faces):
    sum = vertices + edges + faces
    if sum == 14:
         print('This is a Tetrahedron')
    elif sum == 25:
        print('This is a 4 simplex')
    else:
        print('this is a nsimplex')

    sentence = 'the sum of {} and {} and {} is {}.'.format(vertices, edges, faces, sum)
    print(sentence)


def count():
    vertices = int(input("enter number of vertices: "))
    edges = int(input("enter number of edges: "))
    faces = int(input("enter number of faces: "))
    nsimplex(vertices, edges, faces)

count()

Tags: ofnumberinputisdefthisintsum
1条回答
网友
1楼 · 发布于 2024-09-30 00:27:15

我猜你在找这样的东西:

comp = {1},{2},{3}, {1,2},{1,3},{2,3},{1,2,3}

print "vertices =", map(len, comp).count(1)
print "edges =", map(len, comp).count(2)
print "faces =", map(len, comp).count(3)

(我要避免使用complex作为变量名,因为它在Python中是一个关键字。)


编辑:如果您的输入数据确实是一个字符串,您可以简单地计算它:

comp = eval("{1},{2},{3}, {1,2},{1,3},{2,3},{1,2,3}")

编辑:如果您真的想以冗长的循环方式实现它,请看:

comp = "{1},{2},{3}, {1,2},{1,3},{2,3},{1,2,3}"

pos = 0
vertices = edges = faces = 0
while pos < len(comp):
    if comp[pos] == '{':
        pos = pos + 1
        count = 1
        while comp[pos] != '}':
            pos = pos + 1
            if comp[pos] == ',':
                count = count + 1
        if count == 1:
            vertices = vertices + 1
        elif count == 2:
            edges = edges + 1
        elif count == 3:
            faces = faces + 1
    pos = pos + 1

print "vertices =", vertices
print "edges =", edges
print "faces =", faces

(我讨厌这样的代码。但如果需要使用两个循环,这可能是一个合理的解决方案。)

相关问题 更多 >

    热门问题