首页 养生问答 疾病百科 养生资讯 女性养生 男性养生

求大神帮忙看看,python的强制类型转换问题

发布网友 发布时间: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" # 假定你的数据是这样的

# 读取到了 字符串 类型的分数。strip用来去除多余的空格
scores_str = data.strip().split()

# 转成 int 类型,高级一点可以使用map函数,也可以写循环搞定
scores_int = list(map(int, scores_str))

# 写判断就好了, 判断也可以用map配合匿名函数
fail = sum(scores_int[1:]) < 180 or any(lambda x:x<60, scores_int[1:])

Python 可以写的很精炼

scores = list(map(int, data.strip().split()[1:]))
fail = sum(scores) < 180 or any(lambda x: x < 60, scores)

追问谢谢您,我大概能明白,想问下用了这个代码以后报错
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);//延时
}
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com