我正在解决 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()
答案 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