2023.2.8 有一个大学同班同学在做练习的时候,让我帮忙找一段程序的bug,代码如下图所示
def lowernum(a,b):
t=0
y=[1,1,1,1,1,0,0,1,1,1,1,1,0,0]
for i in range(a-1,a+b-1):
t+=y[i]
return t
x,n=map(int,input().split(" "))
if n>7:
km=250*(n//7)*5+(lowernum(x,n%7))*250
else:#n<=7
km=(lowernum(x,n))*250
print(km)
下面是题目
题目描述
有一只小鱼,它上午游泳150公里,下午游泳100公里,晚上和周末都休息(实行双休日),假设从周x(1<=x<=7)开始算起,请问这样过了n天以后,小鱼一共累计游泳了多少公里呢?
输入
输入两个整数x,n(表示从周x算起,经过n天)。
输出
输出一个整数,表示小鱼累计游泳了多少公里。
样例输入
3 10样例输出
2000
下面这是我写的代码
def movement(x, n):
if n == 0:
return 0
else:
sum_ = 0
key = ([1]*5 + [0]*2) * 2
for i in range(x-1, x+n-1):
sum_ += key[i]
return sum_
x, n = map(int, input().split())
if n >= 7:
move = 250 * 5 * (n//7) + movement(x, n%7) * 250
else:
move = movement(x, n)
print(move)
这两段代码思路是完全一样的,并且我通过编写程序测试了在不同数据下两组代码的输出,结果显示完全相同。一时间,陷入了僵局。
但是我突然想到,我在编写测试程序的时候为了方便,将输入方式改为了for循环遍历。于是我将第一段代码中split(" ")中的" "删除,并向平台提交。通过!
遂,我测试了split()与split(" ")的区别
def split1(list_):
for i in list_:
print(i.split())
def split2(list_):
for i in list_:
print(i.split(" "))
list_ = [
"a b",
"a b",
"a b"
]
split1(list_)
split2(list_)
下面是上述代码的输出结果
['a', 'b']
['a', 'b']
['a', 'b']
['a', 'b']
['a', '', 'b']
['a', '', '', 'b']
这也就说明了split()在分割的时候无论多少空格都只分割一次,而split(" ")在分割的时候有几个空格便分割几次。