由于这是一项家庭作业,并且出于完整性考虑,我将使用模拟代码作为示例。我作为示例给出的模型使用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
它读取第一行的第一个字符,然后跳过该行的其余部分。
有机会有人可以帮助我吗?
答案 0 :(得分:2)
您的每个break
语句中的if
正在脱离for letter in sentences:
循环。删除它们。
答案 1 :(得分:1)
break
语句将停止所有迭代,直到当前嵌套级别旁边的最外层。由于您的代码具有if
,elif
和else
的序列,并带有break
语句,因此您所描述的这种行为是预期的行为。
问题是在C ++中,当一种情况的评估结果为true时,以下所有情况也被评估为true。因此,需要休息。正如其他人已经在注释中指出的那样,只需删除中断即可,您的代码将正常工作。