Cumtb_fff 2021-07-20 11:57 采纳率: 80%
浏览 190
已采纳

while必须加break吗?

n = float(input("请输入科目数量:"))
numbers = []
credits = []
weights = []
fcredits=[]
numbers = input('请输入一组成绩(以空格隔开,按回车结束):').split(' ')
credits = input('请输入分数对应科目的学分(以空格隔开,按回车结束):').split(' ')
i = int(0)
c = float(0)
b = float(0)
a = int(0)

while a<n:                                                 #使分数变为浮点数
    numbers[a] = float(numbers[a])
    a = a+1

for credit in credits:
    credit = float(credit)                                 #使学分变为浮点数
    fcredits.append(credit)                                #存储浮点类型的学分
    c = c+credit                                           #求总学分

for credit in credits:
    credit = float(credit) / c                             #求每一科权重
    weights.append(credit)                                 #储存每一科权重
    while i<n:
        b=b+numbers[i]*weights[i]                          #依据权重和每一科分数,求总分
        i=i+1
        break


print(fcredits)
print(numbers)
print(weights)

print(b)
print(a)

这段代码的第28行,如果把break去掉,就会提示第26行的列表超出范围。为什么会这样呢?当i=n的时候while循环不是停止了吗?

  • 写回答

5条回答 默认 最新

  • 鸡蛋酱$ 2021-07-20 12:03
    关注

    你的代码里面while部分作用就是i+1,并且只是执行了一次,就跳出了while的循环,满足i=n的再结束是正常结束,break的作用是非正常结束,break一般用来和if,elif,else 搭配使用,满足条件就退出,不用执行完再退出,有用的话点一下采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已采纳回答 7月20日
  • 创建了问题 7月20日

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?