Python去除小数点后无用的‘0‘_洛谷P5727冰雹猜想

文章讲述了作者在解决洛谷平台上的冰雹猜想问题时遇到的小数点后多余0的问题,通过编写`delete_extra_zero`函数,先将数值转化为字符串并检查是否以.0结尾,再进行处理,实现了删除小数点后0的功能。最后对比了自己的解法和他人简洁的解决方案。
摘要由CSDN通过智能技术生成

 小白第一次投稿,水平不足,欢迎各位大佬批评指正

目录

1.起因

2.尝试过程

3.最终代码

4.结语-冰雹猜想代码


1.起因

我在做这道题的时候P5727 【深基5.例3】冰雹猜想 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

由于计算过程涉及除法运算,导致输出的结果带有小数点,测试不能通过

例:

输出样例:

1 2 4 8 16 5 10 20

我的输出结果:

1.0 2.0 4.0 8.0 16.0 5.0 10.0 20

故我开始尝试删除小数点及其后面的’0‘

2.尝试过程

如果输入一个小数点后结尾有多个0的数字,然后用其减0

会发现多余的0被删除了

print(732.220800-0)
>>732.2208

但是如果小数点后只有0

 减0后小数点后的0仍有

print(732.000-0)
print(732.0-0)

<<732.0
<<732.0

故尝试设计函数分两步去除小数点后的0

3.最终代码

def delete_extra_zero(n):
    n = n-0                      #先去除多余的0
    n = str(n)                   #转变为字符串类型
    if n.endswith('.0') == True: #判断n是否以’.0‘结尾
        n = n.replace('.0','')   #是则删除’.0‘  即用空白符取代
        n = int(n)               #转变回int类型
    return n

测试:

print(delete_extra_zero(729.20008000))
>>729.20008
print(delete_extra_zero(729.0))
>>729

4.结语-冰雹猜想代码

都是很基础的代码,没什么干货。

上面那道题的Python解法

n = int(input())
a = [n]
def bingBao(n):
    if n == 1:
        return a
    elif n%2 == 0:
        n = n/2
        a.append(n)
        return bingBao(n)
    else:
        n = n*3+1
        a.append(n)
        return bingBao(n)
bingBao(n)
a = a[::-1]
for i in range(len(a)):
    print(str(a[i]).replace('.0',''),end = ' ')

到了晚上才发现洛谷的提交记录在哪儿看,我忘了算数运算符的取整符号了,所以想的复杂了,下面贴一个大佬解法:

n = int(input())
a = []
a.append(n)
while n != 1 :         
    if n % 2 :    #整数非0则为True  即如果n%2不为0,则:
        n = n * 3 + 1
    else : n = n // 2
    a.append(n)
a.reverse()
for i in range(0, len(a)) :
    print(a[i], end = ' ')

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值