关于#Python#的问题,如何解决?

img


以下是我编写的解该题的Python代码,但总有几个测试集无法通过

a=input()
c=0
b=len(a)
if int(a)<0:
    b=b-1
    for i in range(1,b):
        if int(a[i])==2:
            c+=1
    if int(a)%2!=0:
       e=c/b*1.5
    else:
       e=c/b*3
else:
    for i in range(1,b):
        if int(a[i])==2:
            c+=1
    if int(a)%2!=0:
       e=c/b
    else:
       e=c/b*2
e*=100
print("%.2f%%"%e)

img


麻烦各位帮忙解答一下🙏😭

根据上述题目信息,我认为该脚本存在三处错误:
1)第二个最外层分支中,数字数位的遍历查找应从第一位开始,也就是将第14行的range起始值改为0.
2)第一个最外层分支中,由于range的左闭右开取值特性,所以边界值应是b+1,即将第6行的b修改为b+1.
3)题目中指出“如果还是个偶数”,则“犯二”指数增加一倍,说明这个条件判断可能基于“给定整数是负数”的前提。因此,最外层else分支不应讨论给定整数的奇偶性,即将第17至20行改为e=c/b.

给出修改后的脚本:

a=input()
c=0
b=len(a)
if int(a)<0:
    b=b-1
    for i in range(1,b+1):
        if int(a[i])==2:
            c+=1
    if int(a)%2!=0:
       e=c/b*1.5
    else:
       e=c/b*3
else:
    for i in range(0,b):
        if int(a[i])==2:
            c+=1
    e=c/b
e*=100
print("%.2f%%"%e)

或者看这个简单一点的脚本:

def how_silly(num:int):
    
    #check out basic information of the giving number
    num_content = list(str(num))
    sign = '-' if num_content[0] == '-' else '+'
    even = True if num % 2 == 0 else False
    pos_num = len(num_content) if sign == '+' else len(num_content) - 1
    freq = num_content.count('2')

    #use calculating rules to find out how silly the number is   
    silly = freq / pos_num
    if sign == '-':
        silly *= 1.5
        if even == True:
            silly *= 2
    silly = '{:.2%}'.format(silly)
    return silly

num = int(input('>>['))
silly = how_silly(num)
print(silly)
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^