python中为啥我的for循环里嵌套的if只能循环一次?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中为啥我的for循环里嵌套的if只能循环一次?相关的知识,希望对你有一定的参考价值。
代码如图
我创建了两个列表,分别存储学生姓名和成绩
然后想通过input函数录入姓名,然后遍历姓名列表
如果姓名==列表[i]的话就修改成绩,否则输出找不到该学生
但是输入aa的话就能找到,输出bb就显示找不到该学生
为啥我这个for循环只执行了一次?
求解 谢谢谢谢谢
你要遍历的话,不能把name = input("请输入你想修改的学生姓名:")放在循环里
应该是先输入,对输入的字符进行循环遍历,而不是循环输入”学生姓名“
运行结果:
参考技术A 你这个程序只依次循环0,1两次。第一次只能改aa,第二次只能改bb.输入姓名和分数应该放在for循环的前面。一次改一个人的成绩。要想改多人的,外面还要加一个while循环,没好跳出。
list1=['aa','bb']
list2=[88,99]
print(list2)
for i in range(len(list1)):
name= input('输了姓名:')
if name==list1[i]:
score = int(input('输入分数:'))
list2[i]=score
print(list2)
##########
[88, 99]
输了姓名:aa
输入分数:66
输了姓名:bb
输入分数:77
[66, 77]
为啥我的代码在执行时的初始嵌套 for 循环中进入无限循环?
【中文标题】为啥我的代码在执行时的初始嵌套 for 循环中进入无限循环?【英文标题】:Why does my code enter into an infinite loop at the initial nested for loop on execution?为什么我的代码在执行时的初始嵌套 for 循环中进入无限循环? 【发布时间】:2020-09-20 11:30:13 【问题描述】:我试图纠正的这段代码是针对 Hackerrank 上的 C++ 程序的属性解析器问题。 代码还没有完成,因为我一次又一次地进入这个可怕的无限循环,因为我无法解决它。
代码:
struct tag
char name[100];
char att[100][100];
char val[100][100];
;
int main()
tag tags[100];
char line[200];
int n,q;
cin>>n>>q;
int a,b,c,flag;
a=0;
for(int i=0;i<n;i++)
cin.getline(line,200);
b=c=flag=0;
int j;
if(flag==0)
for(j=1;line[j]!=' '||line[j]!='>';j++)
tags[a].name[j]=line[j];
cout<<"!";
flag=1;
else if(flag==1)
while(line[j]!='>')
for(j+=1,c=0;line[j]!=' '||line[j]!='=';j++,c++)
tags[a].att[b][c]=line[j];
while(line[j]!='"')
j++;
for(j+=1,c=0;line[j]!='\"';j++,c++)
tags[a].val[b][c]=line[j];
b++;
a++;
cout<< tags[0].name[0];
return 0;
另外,我是 Coding 的新手。建设性的批评将不胜感激:))
【问题讨论】:
给变量起有意义的名字。例如,flag
不会告诉读者该变量的作用。作为猜测(并且需要猜测说明了问题),它可能是first_time
。
【参考方案1】:
在这种情况下:
line[j]!=' ' || line[j]!='>'
对于line[j]
的任何值,析取条件之一将为真。这会导致无限循环。
您正在寻找:
line[j]!=' ' && line[j]!='>'
【讨论】:
【参考方案2】:for(j=1;line[j]!=' '||line[j]!='>';j++)
应该是
for(j=1;line[j]!=' '&& line[j]!='>';j++)
你也永远不会进入 else 部分,因为在迭代开始时你设置 flag==0 并且 if(flag==0) 总是为真
【讨论】:
但是我在检查 flag==0 的函数中将标志设置为 1。所以,我想我可以进入 else 块。 你设置 flag=1,没关系。但在下一次迭代开始时,标志将再次初始化为 0 ( b=c=flag=0; ),然后再检查条件。让我知道您的 else 块是否正在执行此更改。 是的,这是故意的,因为我想在每次迭代开始时运行一次以上是关于python中为啥我的for循环里嵌套的if只能循环一次?的主要内容,如果未能解决你的问题,请参考以下文章