# -*- coding: UTF-8 -*-
# 作者：huanhuilong
# 标题：Hello World 进阶
# 描述：使用递归循环输出Hello World的每个字符，循环5次

def circulate_print(str, count=0):
    if count == 5:
        return
    for char in str:
        print(char)
    circulate_print(str, count=count+1)


def circulate_print_2(str, index=0, *languages, **language_descriptions):
    if index >= len(str) or index >= len(languages):
        return

    key = str[index]
    language = languages[index]
    if key in language_descriptions:
        desc = language_descriptions[key]
        print(f'{key}: {language}, {desc}')
    else:
        print(f'{key}: {language}')

    circulate_print_2(str, index+1, *languages, **language_descriptions)


def dump(index, default=0, *args, **kw):
    print('打印函数参数')
    print('---')
    print('index:', index)
    print('default:', default)
    for i, arg in enumerate(args):
        print(f'arg[{i}]:', arg)
    for key, value in kw.items():
        print(f'keyword_argument {key}:{value}')
    print('')


if __name__ == '__main__':
    dump(0)
    dump(0, 2)
    dump(0, 2, "Hello", "World")
    dump(0, 2, "Hello", "World", install='Python', run='Python Program')

    circulate_print_2(
        'ABCDEFGJ',
        0,
        'ABC', 'BCL', 'C语言', 'Dart', 'Erlang', 'F#', 'Go', 'Julia',
        A='ABC语言是在NWO（荷兰科学研究组织）旗下CWI（荷兰国家数学与计算机科学研究中心）的Leo Grurts，Lambert Meertens，Steven Pemberton主导研发一种交互式，结构化高级语言，旨在替代BASIC，Pascal等语言，用于教学及原型软件设计。Python创始人Guido van Rossum于20世纪80年代曾在ABC系统开发中工作了数年。',
        J='Julia 是一个面向科学计算的高性能动态高级程序设计语言。其语法与其他科学计算语言相似。在许多情况下拥有能与编译型语言相媲美的性能。Julia 是个灵活的动态语言，适合科学和数值计算，性能可与传统静态类型语言媲美。')

    circulate_print("HelloWorld!")
