嵌套循环迭代时跳过整行?蟒蛇

问题描述 投票:0回答:2

由于这是一项家庭作业及其完整性,我将以模拟代码为例。作为示例给出的模型使用switch语句,因此我尝试使用if / else if / else来模拟结果。

for (int i = 0, i < 26; i++)
char ch = word[i]
 type = testChar(ch); 

            switch (type) 
            {
            case 0:
                std::cout << "digit" << std::endl;
                break;

            case 1:
               std::cout << "letter" << std::endl;
               break;


            case 3:
               std::cout << "None" << std::endl;
               break;
            }

homework.txt包含

!while true!
line1
line2

主要包含

def main():
    with open('homework.txt','r') as file:
    data = file.read()
    sentencesbank = data.splitlines()
    for sentences in sentencesbank:
          for letter in sentences:
              type = test(letter) #a test that just returns if the letter is a digit(0) or letter(1)
              if (type == 0):
                     print("digit")
                     break
              elif(type ==1):
                    print("letter")
                    break
              else:
                   print("none")
                   break

是我的代码如何工作的一般要点。预期的产量本来就是

none
letter
letter
letter
letter
letter
none
letter
letter
letter
letter
none

letter
letter
letter
letter
digit
none

letter
letter
letter
letter
digit
none

但实际发生的事情却是如此

none
letter
letter

它读取第一行的第一个字符,然后跳过该行的其余部分。

有可能任何人都可以帮助我吗?

python switch-statement
2个回答
1
投票

break语句停止任何迭代进入当前嵌套级别旁边的外层。由于你的代码有ifelifelse的序列,所有这些都带有break语句,你所描述的这种行为是预期的行为。

问题是在C ++中,当一个案例被评估为true时,所有以下案例也被评估为true。因此,需要休息。正如其他人已在评论中指出的那样,只需删除中断,您的代码就能正常工作。


2
投票

你的每个break陈述中的if正在突破for letter in sentences:循环。删除它们。

© www.soinside.com 2019 - 2024. All rights reserved.