while 循环不会走到开头

While loop does not go to the beginning

我写了 python 与用户输入交互的 while 循环。

有一个 table 带有日期列。

想法是询问用户是否要从 table 中删除 cols。如果是,则需要指定给定列表中的列。它删除列并再次询问是否需要删除更多列,直到得到答案否,然后保存 table.

问题:如果用户想要删除超过 1 列,则循环不再接受/理解列名。

脚本:

x=input('Would you like to drop columns? ')
print(x)
if x=='yes':
    print('The available columns will be print now. please  select each time only one column.')
    print('available columns are:',new_dates)

    d_bye=input('date to drop:')
    print(d_bye)
    df.drop(d_bye,axis=1,inplace=True)
    
    rep=input('do you have more columns to drop?')
    print(rep)

    while rep == 'yes':
        d_bye=input('column to drop:')
        df.drop(d_bye,axis=1,inplace=True)
        print(rep)
        
        if rep=='no':
            break
            
        else:
            print('please type yes or no!')
            print(rep)

df.to_csv(result_table)       
'Process accomplished!'      

这个在特定情况下的输出是:

Would you like to drop columns?  yes
yes
he available columns will be print now. please  select each time only one column.
available columns are: ['a','b','c','d']
date to drop: a
a
do you have more columns to drop? yes
yes
column to drop: c
yes
please type yes or no!
yes
columnn to drop: d
yes
please type yes or no!
yes
column to drop: no

如您所见,在它删除了第一个(我检查过并且确实如此)之后,对于第二个和第三个它不起作用。我怎样才能让它在 while 循环中从更多的列中跳出?

您从未要求用户更新他的决定。您可以使用新的 := 运算符。

while (rep := input("Enter the loop? (yes) ")) == "yes":
    print("We are inside!")
print("Exit! Moving on...")

您还可以注意到不需要检查负输入。您让用户有机会使用 yes 输入进入循环。要退出循环,用户可以简单地 [Enter] 或键入除 yes

之外的任何键