由于这是一项家庭作业及其完整性,我将以模拟代码为例。作为示例给出的模型使用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
它读取第一行的第一个字符,然后跳过该行的其余部分。
有可能任何人都可以帮助我吗?
break
语句停止任何迭代进入当前嵌套级别旁边的外层。由于你的代码有if
,elif
和else
的序列,所有这些都带有break
语句,你所描述的这种行为是预期的行为。
问题是在C ++中,当一个案例被评估为true时,所有以下案例也被评估为true。因此,需要休息。正如其他人已在评论中指出的那样,只需删除中断,您的代码就能正常工作。
你的每个break
陈述中的if
正在突破for letter in sentences:
循环。删除它们。