编写程序,实现以下功能:(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))
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))