输入一组学生的学号、姓名、语文、数学、英语等信息,
信息之间采用空格分隔,空行回车结束录入,
计算每个学生的平均成绩(保留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
你的代码中存在以下问题:
输入的信息没有按照题目要求进行分割,需要使用空格进行分割。
判断输入是否结束的条件不正确,应该判断输入的字符串是否为空。
写入文件时,应该使用字符串拼接的方式,将学号、姓名和平均成绩拼接成一个字符串,再写入文件。
关闭文件时应该使用函数调用方式,即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()
print("*"*10)
#执行结果
**********
在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
以上是跳出循环的解决方案,希望可以帮到您。如果还有问题,请联系我哦!