关于#python#的问题:跳不出循环

输入一组学生的学号、姓名、语文、数学、英语等信息,
信息之间采用空格分隔,空行回车结束录入,
计算每个学生的平均成绩(保留2为小数),
将每个学生的学号、姓名、平均成绩
(注:信息之间空格间隔)写入out.txt文件中。


小明 216515646 70 80 90
毛毛 216515647 75 80 85
小美 216515648 70 85 90

记事本里:

小明 216515646 80.00
毛毛 216515647 80.00
小美 216515648 81.00


```python
f = open("C:\\Users\\111\\Desktop\\CyExamSTU\\out.txt",mode="w",encoding='UTF-8')
ls = []
ls1 = []
while True:
    n = input().split()
    if n == '':
        break
    else:
        for i in n:
            if i.isdigit() and 0 < int(i) < 100:
                ls.append(int(i))
        pj = sum(ls)/len(ls)
        ls1.append(pj)
        ls.clear()
for j in ls1:
    f.write(n[0],n[1],str(j)+'\n')
f.close

你的代码中存在以下问题:

  1. 输入的信息没有按照题目要求进行分割,需要使用空格进行分割。

  2. 判断输入是否结束的条件不正确,应该判断输入的字符串是否为空。

  3. 写入文件时,应该使用字符串拼接的方式,将学号、姓名和平均成绩拼接成一个字符串,再写入文件。

  4. 关闭文件时应该使用函数调用方式,即f.close()。

修改后的代码如下:

f = open("C:\\Users\\111\\Desktop\\CyExamSTU\\out.txt", mode="w", encoding='UTF-8')
ls1 = []
while True:
    n = input().split()
    if not n:
        break
    else:
        name = n[0]
        id = n[1]
        scores = list(map(int, n[2:]))
        avg_score = round(sum(scores) / len(scores), 2)
        ls1.append((name, id, avg_score))

for name, id, avg_score in ls1:
    f.write(f"{name} {id} {avg_score:.2f}\n")

f.close()

注意:在写入文件时,使用了f-string格式化字符串的方式,需要Python 3.6及以上版本支持。如果使用的是Python 3.5及以下版本,可以使用.format()方法进行字符串格式化。

修改了下你的代码,连续回车表示结束。

from decimal import Decimal


f = open("out.txt", mode='w', encoding='UTF-8')
while True:
    n = input().split()
    ls = []
    ls1 = []
    if len(n) == 0:
        break
    else:
        for i in n:
            if i.isdigit() and 0 < int(i) < 100:
                ls.append(int(i))
        pj = sum(ls) / len(ls)
        ls1.append(Decimal(pj).quantize(Decimal("0.00")))
        ls.clear()
        for j in ls1:
            f.write(n[0] + '  ' + n[1] + '  ' + str(j) + '\n')
f.close()

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7742393
  • 这篇博客你也可以参考下:python基础:2.输入和输出
  • 你还可以看下python参考手册中的 python- 格式化输出
  • 除此之外, 这篇博客: 初识python中的 普通输出 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • print("*"*10)
    
    #执行结果
    **********
    
  • 您还可以看一下 龙豪杰老师的Python网络爬虫课程中的 停止和跳出循环小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    在Python中跳出循环可以使用break语句,语法为 break,作用是终止当前循环语句的执行。

    以下是一个示例,在 while 循环中加入 break 语句,当输入停电信号时就可以立即退出循环,停止加工:

    partcount = int(input())
    electric = int(input())
    count = 0
    
    while(count<partcount):
        count += 1
        print("已加工零件个数:",count)
        if(electric):
            print("停电了,停止加工")
            break
    

    需要注意,break 语句只能终止当前循环语句的执行,如果有循环嵌套时,不会跳出嵌套的外循环。如果出现死循环,则可以使用 break 语句终止循环,while 循环中可以像这样使用 break 语句:

    while True:
        # do something
        if condition_met:
            break
    

    以上是跳出循环的解决方案,希望可以帮到您。如果还有问题,请联系我哦!