从一道 大一基础python题 中发现的 有关split方法 的细节

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(" ")在分割的时候有几个空格便分割几次。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值