Python Forum
How to trigger for loop after while
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to trigger for loop after while
#1
Hello,

This is my code:
input_number=3
    layer=5
    paulis = list(product(['I','X','Y','Z'],repeat=input_number))
    a = list(product(['i','x','y','z'],repeat = input_number))
    rho_1='rho_1' 
    el=[]
    element1=""
    for order in range(len(paulis)):
        while(layer>0):  
            element1=element1+'p_{'+str(layer)+a[order][0]+a[order][1]+a[order][2]+'}*'
            layer=layer-1
            if layer== 0: 
                element1=element1+'+'
                el.append(element1)
                
    print(element1)
This is my output:
p_{5iii}*p_{4iii}*p_{3iii}*p_{2iii}*p_{1iii}*+
The output is correct but it is missing.
I am waiting this result:
          p_{5iii}*p_{4iii}*p_{3iii}*p_{2iii}*p_{1iii}+ p_{5iix}*p_{4iix}*p_{3iix}*p_{2iix}*p_{1iix}+\\
          p_{5iiy}*p_{4iiy}*p_{3iiy}*p_{2iiy}*p_{1iiy}+p_{5iiz}*p_{4iiz}*p_{3iiz}*p_{2iiz}*p_{1iiz}+\\
          p_{5ixi}*p_{4ixi}*p_{3ixi}*p_{2ixi}*p_{1ixi}+p_{5ixx}*p_{4ixx}*p_{3ixx}*p_{2ixx}*p_{1ixx}+\\
          p_{5ixy}*p_{4ixy}*p_{3ixy}*p_{2ixy}*p_{1ixy}+p_{5ixz}*p_{4ixz}*p_{3ixz}*p_{2ixz}*p_{1ixz}+\\
          p_{5iyi}*p_{4iyi}*p_{3iyi}*p_{2iyi}*p_{1iyi}+p_{5iyx}*p_{4iyx}*p_{2iyx}*p_{2iyx}*p_{1iyx}+\\

etc....(until finishing all triplet combination of i,x,y,z)
How to modify my code ?
Reply
#2
Hello,
input_number=3
layer=5
paulis = list(product(['I','X','Y','Z'],repeat=input_number))
a = list(product(['i','x','y','z'],repeat = input_number))
rho_1='rho_1' 
el=[]
element1=""
for order in range(len(paulis)):   
    while(layer>0):  
        element1=element1+'p_{'+str(layer)+a[order][0]+a[order][1]+a[order][2]+'}*'
        layer=layer-1
        if layer== 0: 
            element1=element1+'+'
            el.append(element1)
    else:
        layer=5
        
print(element1)
or
for order in range(len(paulis)):
    layer = 5
    while(layer>0):  
        element1=element1+'p_{'+str(layer)+a[order][0]+a[order][1]+a[order][2]+'}*'
        layer=layer-1
        if layer== 0: 
            element1=element1+'+'
            el.append(element1)
quest likes this post
I speak Python but I don't speak English (I just read it a little). If I express myself badly, please blame the translator^^.
Reply
#3
thanks a lot
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Pandas, How to trigger parallel loop Mekala 4 2,651 Oct-29-2020, 12:58 PM
Last Post: Mekala
  How to trigger python script twice a day SriMekala 1 3,843 Aug-30-2019, 01:31 AM
Last Post: scidam
  Why does my Switch trigger all Cases? IAMK 6 3,833 Apr-09-2018, 11:12 AM
Last Post: snippsat
  How to trigger a function by clicking the left mouse click? HelloBoyz 1 9,297 Jun-29-2017, 09:43 PM
Last Post: nilamo

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020