发布网友 发布时间:2022-04-24 05:49
共6个回答
热心网友 时间:2022-04-18 04:35
# 考号 数学 语文 英语
txt = '''
10153450101 82 78 68
10153450102 50 78 68
10153450103 10 20 30
'''
# 三门成绩总和少于80分??? 180才合理吧
line = txt.split('\n')
# print(line) # ['', '10153450101 82 78 68', '10153450102 50 78 68', '10153450103 10 20 30', '']
for v in line:
if v == '': continue # 跳过空行
# print(v) # 10153450101 82 78 68
arr = v.split(' ') #
# print(arr) # ['10153450101', '82', '78', '68']
count = int(arr[1]) + int(arr[2]) + int(arr[3])
print('\n学号:{} 数学:{} 语文:{} 英语:{} 总分:{}'.format(arr[0],arr[1],arr[2],arr[3],count))
if count < 80:
print('不合格 三门成绩总和少于80分')
for v in arr:
if int(v) < 60:
print('不合格 有一门成绩少于60分')
break
# 输出结果:
# 学号:10153450101 数学:82 语文:78 英语:68 总分:228
# 学号:10153450102 数学:50 语文:78 英语:68 总分:196
# 不合格 有一门成绩少于60分
# 学号:10153450103 数学:10 语文:20 英语:30 总分:60
# 不合格 三门成绩总和少于80分
# 不合格 有一门成绩少于60分
热心网友 时间:2022-04-18 05:53
像楼上说的,如果你用固定的位置索引去读取那些分数的话很容易弄错的,可以采用直接split的方式。
首先上一个拆解版的:
data = "10153450101 82 78 68" # 假定你的数据是这样的Python 可以写的很精炼
scores = list(map(int, data.strip().split()[1:]))追问谢谢您,我大概能明白,想问下用了这个代码以后报错
failed = sum(scores) < 180 or any(lambda x: x < 60, scores)
TypeError: any() takes exactly one argument (2 given)
请问该怎么解决呢,谢谢
追答
啊不好意思,我打漏了一个map
fail = sum(scores) < 180 or any(map(lambda x: x < 60, scores))热心网友 时间:2022-04-18 07:27
你好,你这样提取有可能因为各行数据的位置而报错。你可以采用下面的代码:
helpList=re.split(”\s+”,readline)#输入分割
a = list(filter(None, helpList)) #去空
total = int(a[1])+int(a[2])+int(a[3])
If total<80:
print(“the total is less than 80”)
If int(a[1])<60) or int(a[2])<60 or int(a[3])<60:
print(“one of them less than 60”)
热心网友 时间:2022-04-18 09:19
你int的数据是切片的数组,不行的。
Int的对象只能是数字类型的数据
热心网友 时间:2022-04-18 11:27
建议一行一组数据,每个数据之间用空格或制表符分隔,
读取的时候按分隔符分割数据
热心网友 时间:2022-04-18 13:51
#include <reg52.h>
#define uint unsigned int
/* ********************************************* */
// 函数名称: delay()
// 函数功能:毫秒延时
/* ********************************************* */
void delay(uint z)
{
uint x,y;
for(x = 0; x < z; x++)
for(y = 0; y < 113; y++);
}
/* ***************************************************** */
// 函数名称:main()
// 函数功能:实现流水灯效果
// 入口参数:无
// 出口参数:无
/* ***************************************************** */
void main(void)
{
int i;//循环变量
while(1)
{
P2 = 0xff; //设定LED灯初始值
delay(1000);
for(i = 0;i < 8;i++)
{
P2 = P2 << 1;//移位、依次点亮
delay(1000);//延时
}
}