请求编码解决方案的帮助

时间:2014-12-26 14:55:12

标签: python

我正在解决 Codingbat Python 问题,需要一些名为make_pi的帮助。

  

问题陈述:

     

返回int array长度3,其中包含pi的前3位数{3, 1, 4}

我已经看到了其他人的所有答案,就是简单地返回[1,2,3]的列表。但是,我不认为这就是问题所在。我相信通过我对这个问题的解读,它要求pi,这是一个浮点数,然后操纵并返回一个整数列表,没有小数。我试图通过简单的循环和迭代来做到这一点。我知道有方法,列表理解等可以很容易地做到这一点,但 Codingbat 的要点是学习,因为没有使用方法等,我认为必须有一个简单的循环解。我认为你首先将float转换为字符串,然后重建不带小数的字符串,然后返回[1,2,3]的结果int列表。为长期的啰嗦道歉,但我正在努力学习并可以使用一些帮助。

def make_pi():
    pi = 3.14
    pilist = str(pi)

make_pi()

5 个答案:

答案 0 :(得分:0)

def make_pi():
num = list(str(3.14))
for ans in range(len(num)):
    if num[ans] == '.':
        num.remove(num[ans])
        break
return num

答案 1 :(得分:0)



def make_pi():
    pi = 3.14

    pilist =  str(pi) 
    c = []
    for digit in pilist:
        if digit != ".":
            c.append ((digit))     
    d = []    
    for i in c:
        d.append(int(i))
    print d 

 
make_pi() # [3, 1, 4]




感谢你的努力亚历山大,但你最终得到的是一份str list vice int list。

我想我已经能够解决了。我所做的是首先定义pi,然后从中创建一个str列表然后迭代以构建一个没有小数的新的int str。然后,这导致了一个新的列表[3,1,4]作为字符串字符。    希望我已经正确地进入了这个职位。

答案 2 :(得分:0)

import math
def make_pi():  
    a= math.pi
    b=str(round(a,2)) #Round to 2 places & converted to string for slicing 
    c=b[0:1]+b[2:] #To remove the decimal point in 3.14 
    return  [int(x) for x in c] #Convert to integer 
print(make_pi())

答案 3 :(得分:0)

我尝试了下面的代码,在 jupyter 中它可以工作,但如果我在 codingbat 中尝试相同的代码,则会引发错误。

基本上代码是将 3.14 转换为字符串,然后使用 FOR 循环来迭代每个字符,跳过点然后将所有字符存储到一个新变量,同时将每个字符转换为整数。

def make_pi():
    pi = str(3.14)
    new_pi=[]
    
    
    for x in pi:
        if x == '.':
            continue
        else:
            x = int(x)
            new_pi.append(x)
    return new_pi

答案 4 :(得分:-1)

def make_pi():
    pi = "3.14"
    pie = [int(a) for a in pi if a != "."]
    return pie