分割命令及列表概念 家庭作业 额外作业

第五次作业

为什么要用列表分割呢,在输入数据的时候,Python会一次性将一行的数据均输入进来。但是,如果在输入时一行有多个数据时,就很难将数据一次性的转换成为所需要的数值。我们要输入的数据逐渐的变多,每输一个数字都要按一次回车,非常的麻烦,所以我们要一次输入完所有的数据,然后一个回车解决

使用方法

split与单词的含义一样,分割。即以某种字符为分隔符,将一个字符串分割为若干部分

通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)

这个没有什么好讲的,具体请看示例:

1
2
3
string = input("请输入几个数字,用空格分开")
a = string.split(" ")
print(a)

这段代码使用的方法是输入三个数,中间要加空格,例如【67 17 78】,具体运行示例如下:

img

这里面,给a的赋值是这个列表里面的数,如实例之中的显示效果:在[]中呈现了若干个字符串。这种存储形式,在Python中称之为列表,对列表,可以有很多种操作。其中最基础的就是遍历(也就是访问)。

这里面注意,在string.split(“ “)里,引号里面的是空格,一定要打,str:表示为分隔符,默认为空格,但是不能为空(‘’)。若字符串中没有分隔符,则把整个字符串作为列表的一个元素

​ 例如:s.split(‘’)是不能运行的

但其中的空格也可以换成别的符号,例如string.split(“.”)代码运行示例:

img

在数字后面输入【.】在后面就会被自动替换出来

类型转换

在这里,[]中的第一个内容称为第0个内容;第二个内容称之为第1个内容……依次编号。可以用a[0]、a[1]……进行访问,也可以直接用于转换

使用方法:

1
2
3
shu1 = a[0]
shu2 = a[1]
shu3 = a[2]

因为计算机计数的顺序是从0开始的,所以要提取第一位数要输入0

家庭作业

题目解析

请在同一行输入三个整数,用分割函数,将它分成三个部分,再对每个部分进行转换成为整数。最后计算这三个整数的和,并输出。

举个例子,当你输入【10 20 30】,把这个转换成列表形式,然后把这三个数加起来,即结果为60

第一步:输入数据和转化数据

使用input输入三个数,使用split转化为列表形式

1
2
a = input('请输入三个数:')
i = a.split(" ")

第二步:数据提取

从列表「i」里提取第一、第二、第三个数,并要把它们转化为整数,方便后面的计算

1
2
3
j = int(i[0])
k = int(i[1])
l = int(i[2])

第三步:加法计算

把三个数加起来就是了,别忘了输出

1
2
m = j + k + l
print("相加值为:"+str(m))

代码示例

1
2
3
4
5
6
7
8
a = input('请输入三个数:')   
i = a.split(" ") #转化为列表
print(i) #输出列表
j = int(i[0]) #提取第一个数
k = int(i[1]) #提取第二个数
l = int(i[2]) #提取第三个数
m = j + k + l #三个数相加
print("相加值为:"+str(m)) #输出结果,数字要转化为字符串

部分代码解释

4、5、6行的int为整数的转化,这一步可以不加,但后面要加。如果你不想加的话,后面的圆括号可以不要

额外作业

时间秒数转换

题目解析

给定一个时间:10:20:30,计算出,共有多少秒

这里要先吧时间提取出来,10小时,20分钟,30秒,然后要全部转换成秒钟,小时要乘以3600,因为60✖️60即60秒乘60分钟等于3600秒,分钟乘以60,因为一分钟有60秒,秒钟就不用乘了

第一步:输入与分割

输入一个时间,格式为10:20:30这样的,即10小时20分钟30秒,这里需要注意:输入的时间中间使用冒号分割的,所以要以冒号作为列表的分割,即「:」

1
2
a = input("请输入一个时间(格式00:00:00):")
b = a.split(":")

第二步:秒钟计算

前面我说过,小时和分钟各乘以多少,这里直接提取然后乘法计算就行了,最后还要把这些秒钟加在一起,这里注意:运算需要将提取的数转化为整数才可以进行

1
2
3
4
c = int(b[0]) * 3600
d = int(b[1]) * 60
e = int(b[2])
f = c + d + e

第三步:输出

1
print('时间共:' + str(f) + '秒')

代码示例

1
2
3
4
5
6
7
a = input("请输入一个时间(格式00:00:00):")   #输入一个时间的大小,要使用英文输入
b = a.split(":") #把a即输入的时间分割成列表形式
c = int(b[0]) * 3600 #提取时间的第一位,即小时数,并转换位秒
d = int(b[1]) * 60 #提取时间的第二位,即分钟数,并转换位秒
e = int(b[2]) #提取时间的第三位,即秒钟数
f = c + d + e #算出时间的总秒数
print('时间共:' + str(f) + '秒') #输出,结果需要转换为字符串

时间相差

题目解析

再给定一个时间:09:30:01,计算出,两个时间之间差多少秒

这里需要输入两个时间(一个大一个小),两个相减算出相差的秒数

第一步:输入时间并转化为列表

第一个较小的时间和第二个较大的时间,提取记得以冒号来提取

1
2
3
4
a = input("请输入第一个时间(小):")
b = input("请输入第二个时间(大):")
c = a.split(":")
d = b.split(":")

第二步:提取+数据的计算

小时还是乘以3600,分钟乘以60,全部转换为秒,拿第二个时间减去第一个时间

1
2
3
4
5
6
7
8
9
e = int(c[0]) * 3600
f = int(d[0]) * 3600
g = int(c[1]) * 60
h = int(d[1]) * 60
i = int(c[2])
j = int(d[2])
k = e + g + i
l = f + h + j
m = l - k

第三步:输出

1
print('一共相差:' + str(m) + '秒')

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
a = input("请输入第一个时间(小):")   #输入第一个小的时间,要使用英文输入
b = input("请输入第二个时间(大):") #输入第二个大的时间,要使用英文输入
c = a.split(":") #第一个时间的分割
d = b.split(":") #第二个时间的分割
e = int(c[0]) * 3600 #提取第一个时间的第一位,即小时数,并转换位秒
f = int(d[0]) * 3600 #提取第二个时间的第一位,即小时数,并转换位秒
g = int(c[1]) * 60 #提取第一个时间的第二位,即分钟数,并转换位秒
h = int(d[1]) * 60 #提取第二个时间的第二位,即分钟数,并转换位秒
i = int(c[2]) #提取第一个时间的第三位,即秒钟数
j = int(d[2]) #提取第二个时间的第三位,即秒钟数
k = e + g + i #算出第一个时间总共的秒数
l = f + h + j #算出第二个时间总共的秒数
m = l - k #大的时间减小的时间
print('一共相差:' + str(m) + '秒') #输出,结果需要转换为字符串

文章作者:朱海天 未经允许禁止转载