朝花夕拾-Python-技能树-学习笔记

Py技能树-学习笔记

朝花夕拾,一个老年人的学习笔记,不妥请指,感谢

一、简介

(一)Hello world

输出 “Hello,World!” 字符串,请找出以下选项中错误的选项:
A.选项

if __name__ == '__main__':  # 主函数
    str_list = ["Hello,","World!"]  # 列表str_list赋值
    print(str_list[0]+str_list[1])  # 打印列表[0]和[1]
输出结果:Hello,World!

B.选项

if __name__ == '__main__': # 建立主函数
    str1 = "Hello,"  # 字符串赋值
    str2 = "World!"  # 字符串赋值
    print(str1+str2) 
输出结果:Hello,World!

C.选项

if __name__ == '__main__': # 建立主函数
    str1 = "Hello,"        # 字符串赋值
    str2 = "World!"        # 字符串赋值
    print('str1'+'str2')   
输出结果:str1str2

D.选项

if __name__ == '__main__': #建立主函数
    str = "Hello,World!"   #str字符串赋值
    print(str)            
输出结果:Hello,World!    

二、程序设计思想

(一)编程语言简史

历史上有很多编程语言,他们在编程语言发展的过程中都起到过重要的作用。
下面的 Python 列表包含了历史上的大部分编程语言。
languages = [“Regional Assembly Language”,“Autocode”,“FORTRAN”,“IPL (LISP的先驱)”,“FLOW-MATIC (COBOL的先驱)”,“COMTRAN (COBOL的先驱)”,“LISP”,“ALGOL 58”,“FACT (COBOL的先驱)”,“COBOL”,“APL”,“Simula”,“SNOBOL”,“CPL (C的先驱)”,“BASIC”,“PL/I”,“BCPL (C的先驱)”,“Logo”,“Pascal”,“Forth”,“C语言”,“Smalltalk”,“Prolog”,“ML”,“Scheme”,“SQL”,“Ada”,“C++”,“Common Lisp”,“MATLAB”,“Eiffel”,“Objective-C”,“Erlang”,“Perl”,“Tcl”,“FL (Backus)”,“Haskell”,“Python”,“Visual Basic”,“HTML”,“Ruby”,“Lua”,“CLOS (part of ANSI Common Lisp)”,“Java”,“Delphi (Object Pascal)”,“JavaScript”,“PHP”,“REBOL”,“D”,“C#”,“Visual Basic .NET”,“F#”,“Scala”,“Factor”,“Windows PowerShell”,“Rust”,“Clojure”,“Go”]
下面的 Python 列表包含了这些编程对应的创建时间。
years = [1951, 1952, 1954, 1954, 1955, 1957, 1958, 1958, 1959, 1959, 1962, 1962, 1962, 1963, 1964, 1964, 1967 ,1968 ,1970 ,1970 ,1972 ,1972 ,1972 ,1973 ,1975 ,1978 ,1980 ,1983 ,1984 ,1984 ,1985 ,1986 ,1986 ,1987 ,1988 ,1989 ,1990 ,1991 ,1991 ,1991 ,1993 ,1993 ,1994 ,1995 ,1995 ,1995 ,1995 ,1997 ,1999 ,2001 ,2001 ,2002 ,2003 ,2003 ,2006 ,2006 ,2007 ,2009]
编写一个 Python 程序,每行打印每个编程语言的名字和对应的创建时间,例如:
Regional Assembly Language : 1951
Autocode : 1952
FORTRAN : 1954
请找出以下代码中错误的选项。
A.选项

if __name__ == '__main__':   # main主函数
    languages = ...
    years = ...
	i = 0  					 # 循环i变量赋值0
	while i < len(years):    # len获取year列表的个数,从0启动循环
  	  language = languages[i] # 循环输出language从0元素开始
  	  year = years[i]         # 循环输出year[i]从0元素开始
  	  print(language, ':', year) # 打印结果
      i += 1                  # i的值加1
输出结果:
Regional Assembly Language : 1951
Autocode : 1952
FORTRAN : 1954
IPL (LISP的先驱) : 1954
FLOW-MATIC (COBOL的先驱) : 1955

B.选项

if __name__ == '__main__':  # 定义主函数
    languages = ...
    years = ...
    for i in range(0, len(languages)):  # for循环i次,range取值从0到languages列表的元素个数
        language = languages[i]         # language列表取值
        year = years[i]					# year列表取值
        print(language, ':', year)		# 打印language:year格式
输出结果:
Regional Assembly Language : 1951
Autocode : 1952
FORTRAN : 1954
IPL (LISP的先驱) : 1954

C.选项

if __name__ == '__main__':	# main主函数			
    languages = ...
    years = ...
    # 打印格式
    [print(languages[i], ':', years[i]) for i in range(0, len(languages))]
输出结果:
Regional Assembly Language : 1951
Autocode : 1952
FORTRAN : 1954
IPL (LISP的先驱) : 1954
FLOW-MATIC (COBOL的先驱) : 1955

D.选项

if __name__ == '__main__': # main主函数
    languages = ...
    years = ...
    for language in languages: # 一次for循环languages列表的元素个数
        for year in years:     # 二次for循环,在languages[i]的一次循环中循环years列表中year元素
            print(language, ':', year)
输出结果:
Regional Assembly Language : 1951
Regional Assembly Language : 1952
Regional Assembly Language : 1954
Regional Assembly Language : 1954
Regional Assembly Language : 1955

(二)编程语言发明家

题目地址
A.选项

#-*- coding: UTF-8 -*-
def parse_parts(creator): # 定义了parse_profile方法中调用的parse_parts方法
    index = creator.find(',') # 调用字符串的内置find函数,查找','在多少位
    name, achievement = creator[0:index], creator[index+1:] # 获取name,achievement的值
    return name.strip(), achievement.strip() # 去除空格
def parse_name(name): # 定义了parse_profile方法中调用的parse_name方法
    index = name.find('(') # 调用字符串的内置find函数,查找'('在字符串的哪一位
    # 赋值name_cn和name_en变量,'('号之前切片[0:index]即中文名给name_cn,'('号之后切片[index:]给到name_en
    name_cn, name_en = name[0:index], name[index:]
    name_en = name_en[1:len(name_en)-1] # 字符串切片从 name_en 中去掉首尾的括号()
    return name_cn, name_en
def parse_profile(creator):  # 定义了parse_creators方法中调用的parse_profile方法
    name, achievement = parse_parts(creator)  # 调用parse_parts方法,获得字符串name和achievement的值
    name_cn, name_en = parse_name(name)       # 调用parse_name和name_en的字符串值
    return {'name_cn': name_cn, 'name_en': name_en, 'achievement': achievement} # 返回字典name_cn和name_en和achievement
def parse_creators(creators): # main函数调用的是这个方法
    profiles = []             # 定义profiles列表
    for creator in creators:  # 执行creators循环
        profile = parse_profile(creator)  # 执行parse_profile方法
        profiles.append(profile)          # 在profiles列表中添加profile方法的返回值
    return profiles                       # 返回profiles值
if __name__ == '__main__':  # 主函数
    # creator列表
    creators = [
  "约翰·巴科斯(JohnWarnerBackus), 创建了Fortran语言",
  "阿兰·库珀(Alan Cooper), 开发了Visual Basic语言",
  "詹姆斯·高斯林(James Gosling), 开发了Java语言",
  "安德斯·海尔斯伯格(Anders Hejlsberg), 开发了Turbo Pascal、Delphi、C#以及TypeScript",
  "丹尼斯·里奇(Dennis MacAlistair Ritchie), 发明了C语言",
  "比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup), 他以创造C++编程语言而闻名,被称为“C++之父”",
  "吉多·范罗苏姆(Guido van Rossum), 创造了 Python"
]
    # 调用parse_creator方法
    profiles = parse_creators(creators)
    # 打印profiles值
    print(profiles)
输出结果:
约翰·巴科斯 
 JohnWarnerBackus
阿兰·库珀 
 Alan Cooper

B.选项

#-*- coding: UTF-8 -*-
def parse_parts(creator): # 定义了parse_profile方法中调用的parse_parts方法
    index = creator.find(',') # 调用字符串的内置find函数,查找','
    name, achievement = creator[0:index], creator[index+1:] # 获取name,achievement的值
    return name.strip(), achievement.strip() # 去除空格
def parse_name(name): # 定义了parse_profile方法中调用的parse_name方法
    index = name.find('(') # 调用内置find函数,查找'('
    # 赋值name_cn和name_en变量,'('号之前切片[0:index]即中文名给name_cn,'('号之后切片[index:]给到name_en
    name_cn, name_en = name[0:index], name[index:]
    name_en = name_en[1:len(name_en)-1] # 切片从 name_en 中去掉首尾的括号()
    return name_cn, name_en
def parse_creators(creators): # 定义main主函数中调用的parse_creators方法
    profiles = [] # 定义profiles列表
    i = 0 # 定义I变量为0
    while i<len(creators): #设置while循环,循环次数为creators值数
        creator = creators[i] # 定义creator变量为列表第i位的值
        name, achievement = parse_parts(creator) # 赋值name,achivevment的值
        name_cn,name_en = parse_name(name) # 赋值name_cn,name_en的值
        # profile列表中添加name_cn,name_en,achievement的值
        profiles.append({ 'name_cn': name_cn, 'name_en': name_en, 'achievement': achievement })
        i+=1 # 循环+1
    return profiles # 返回prifile列表的值
if __name__ == '__main__':  # 主函数
    # creator列表
    creators = [
  "约翰·巴科斯(JohnWarnerBackus), 创建了Fortran语言",
  "阿兰·库珀(Alan Cooper), 开发了Visual Basic语言",
  "詹姆斯·高斯林(James Gosling), 开发了Java语言",
  "安德斯·海尔斯伯格(Anders Hejlsberg), 开发了Turbo Pascal、Delphi、C#以及TypeScript",
  "丹尼斯·里奇(Dennis MacAlistair Ritchie), 发明了C语言",
  "比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup), 他以创造C++编程语言而闻名,被称为“C++之父”",
  "吉多·范罗苏姆(Guido van Rossum), 创造了 Python"
]
    # 调用parse_creator方法
    profiles = parse_creators(creators)
    # 打印profiles值
    for profile in profiles:
        print(profile,'\n')
输出内容:
{'name_cn': '约翰·巴科斯', 'name_en': 'JohnWarnerBackus', 'achievement': '创建了Fortran语言'} 
{'name_cn': '阿兰·库珀', 'name_en': 'Alan Cooper', 'achievement': '开发了Visual Basic语言'} 
{'name_cn': '詹姆斯·高斯林', 'name_en': 'James Gosling', 'achievement': '开发了Java语言'}         

C.选项

#-*- coding: UTF-8 -*-
def parse_parts(creator): # 定义了parse_profile方法中调用的parse_parts方法
    index = creator.find(',') # 调用集合的内置find函数,查找','
    name, achievement = creator[0:index], creator[index+1:] # 获取name,achievement的值
    return name.strip(), achievement.strip() # 去除空格
def parse_name(name): # 定义了parse_profile方法中调用的parse_name方法
    index = name.find('(') # 调用集合的内置find函数,查找'('
    # 赋值name_cn和name_en变量,'('号之前切片[0:index]即中文名给name_cn,'('号之后切片[index:]给到name_en
    name_cn, name_en = name[0:index], name[index:]
    name_en = name_en[1:len(name_en)-1] # 切片从 name_en 中去掉首尾的括号()
    return name_cn, name_en
def parse_creators(creators): # 定义main主函数中调用的parse_creators方法
    profiles = [] # 定义profiles列表
    for creator in creators: # 设置for循环,循环次数为creators列表内元素的数量,值为各个元素的值
        name, achievement = parse_parts(creator) # 赋值name,achievement的值
        name_cn, name_en = parse_name(name) # 赋值name_cn和name_en的值
        # 在profile列表中添加name_cn+name_en+achievement的字典
        profiles.append({ 'name_cn': name_cn, 'name_en': name_en, 'achievement': achievement })
    return profiles # 返回prifile列表
if __name__ == '__main__':  # 主函数
    # creator列表
    creators = [
  "约翰·巴科斯(JohnWarnerBackus), 创建了Fortran语言",
  "阿兰·库珀(Alan Cooper), 开发了Visual Basic语言",
  "詹姆斯·高斯林(James Gosling), 开发了Java语言",
  "安德斯·海尔斯伯格(Anders Hejlsberg), 开发了Turbo Pascal、Delphi、C#以及TypeScript",
  "丹尼斯·里奇(Dennis MacAlistair Ritchie), 发明了C语言",
  "比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup), 他以创造C++编程语言而闻名,被称为“C++之父”",
  "吉多·范罗苏姆(Guido van Rossum), 创造了 Python"
]
    # 调用parse_creator方法
    profiles = parse_creators(creators)
    # 打印profiles值
    for profile in profiles:
        print(profile,'\n')
输出内容:
{'name_cn': '约翰·巴科斯', 'name_en': 'JohnWarnerBackus', 'achievement': '创建了Fortran语言'} 
{'name_cn': '阿兰·库珀', 'name_en': 'Alan Cooper', 'achievement': '开发了Visual Basic语言'} 

D.选项

#-*- coding: UTF-8 -*-
def parse_parts(creator): # 定义了parse_profile方法中调用的parse_parts方法
    index = creator.find(',') # 调用集合的内置find函数,查找','
    name, achievement = creator[0:index], creator[index+1:] # 获取name,achievement的值
    return name.strip(), achievement.strip() # 去除空格
def parse_name(name): # 定义了parse_profile方法中调用的parse_name方法
    index = name.find('(') # 调用集合的内置find函数,查找'('
    # 赋值name_cn和name_en变量,'('号之前切片[0:index]即中文名给name_cn,'('号之后切片[index:]给到name_en
    name_cn, name_en = name[0:index], name[index:]
    name_en = name_en[1:len(name_en)-1] # 切片从 name_en 中去掉首尾的括号()
    return name_cn, name_en
def parse_profile(creator): # 定义了parse_creator函数中调用的parse_profile方法
    name, achievement = parse_parts(creator) # name,achievement赋值
    name_cn, name_en = parse_name(name) # name_cn,name_en赋值
    # 返回字典name_cn+name_en+achievement
    return { 'name_cn': name_cn, 'name_en': name_en, 'achievement': achievement }
def parse_creators(creators):  # 定义了main主函数中调用的parse_creators方法
    # 返回了列表 parse_profile函数的返回值,为字典类型
    return [ parse_profile(creator) for  creator in creators]
if __name__ == '__main__':  # 主函数
    # creator列表
    creators = [
  "约翰·巴科斯(JohnWarnerBackus), 创建了Fortran语言",
  "阿兰·库珀(Alan Cooper), 开发了Visual Basic语言",
  "詹姆斯·高斯林(James Gosling), 开发了Java语言",
  "安德斯·海尔斯伯格(Anders Hejlsberg), 开发了Turbo Pascal、Delphi、C#以及TypeScript",
  "丹尼斯·里奇(Dennis MacAlistair Ritchie), 发明了C语言",
  "比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup), 他以创造C++编程语言而闻名,被称为“C++之父”",
  "吉多·范罗苏姆(Guido van Rossum), 创造了 Python"
]
    # 调用parse_creator方法
    profiles = parse_creators(creators)
    # 打印profiles值
    for profile in profiles:
        print(profile,'\n')
输出内容:
{'name_cn': '约翰·巴科斯', 'name_en': 'JohnWarnerBackus', 'achievement': '创建了Fortran语言'} 
{'name_cn': '阿兰·库珀', 'name_en': 'Alan Cooper', 'achievement': '开发了Visual Basic语言'} 
  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值