求解一道Python编程题

编写程序,实现以下功能:(1)创建空字典dic_student.(2)用户按行依次输入五名学生的姓名和年龄, 存入字典dic_student。 (3)按行输出字典dic_student中的内容, 姓名左对齐三位,和年龄之间用\t分隔。

斐波那契数列自第三个数开始,每个数均为之前两个数的和。

至少有两种方法来实现它。

最常见的利用迭代的方法,其核心思路是

fib(n) = fib(n-1) + fib(n-2)

而在n<2时直接,没有n-2,因此直接返回1:

def fib(num): return 1 if n<2 else fib(num-1) + fib(num-2)

这是一种很简单的实现。在阶梯数不大时,它很好用。当阶梯数很大时,因为二次手迭代,会比较慢。因此,可以在计算中保存中间值(1至n-1的阶梯数)来减少计算量:

这种方式在计算阶梯数10000时就可以保持不错的性能。如果需要多次计算该数列,则可以利用对象来保持这个中间值列表,下列代码中,Fibonaci实例只计算未曾计算的阶梯数,在重复调用时它更具优势:

class Fibonaci(object):

....history=[1, 1]

....def cacl(self, num):

........while len(self.history) <= num:

............self.history.append(self.history[-1] + self.history[-2])

........return self.history[num]

if __name__ == '__main__':

....fib = Fibonaci()

....print(fib.calc(100))

....print(fib.calc(32))

....print(fib.calc(10000))

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-22

dic_student = {}

count = 0

while count < 5:

    name = input()

    age = input()

    dic_student[name] = age

    count += 1

for i, j in dic_student.items():

    print('{}\t{}'.format(i, j))

追问

题目中的左对齐三位要怎么操作呢

追答

姓名左对齐三位是什么意思?这样吗?

dic_student = {}

count = 0

while count < 5:

    name = input()

    age = input()

    dic_student[name] = age

    count += 1

for i, j in dic_student.items():

    print('{}    {}'.format(i, j))

本回答被提问者和网友采纳
第2个回答  2020-04-22

相似回答