Python练习:循环

题目1

有如下的2个字符串


str1 = '''
熊宁
杰益

王伟伟

青芳

玉琴
焦候涛
莫福
杨高旺
唐欢欢
韩旭
'''
       
str2 = '''
焦候涛 
熊宁 
玉琴 

骆龙 

韩旭 
杨高旺

杰益  

莫福  

伟伟

李福  
'''

请写一个程序

找出 str1 中所有 str2 中不存在的人名,并且

找出 str2 中所有 str1 中不存在的人名

答案与解析



题目2

有如下的字符串,记录了三国人物的名字和年龄

ageTable = '''
    诸葛亮, 28
    刘备, 48
    刘琦, 25
    赵云, 32
    张飞, 43
    关羽, 45
'''

请写一个程序将其中 30岁以上和以下的人分别打印出来,类似这样

大于等于30岁的人有:
刘备
赵云
张飞
关羽

小于30岁的人有:
诸葛亮
刘琦

答案与解析

















































题目1-答案

str1 = '''
熊宁
杰益

王伟伟

青芳

玉琴
焦候涛
莫福
杨高旺
唐欢欢
韩旭
'''
       
str2 = '''
焦候涛 
熊宁 
玉琴 

骆龙 

韩旭 
杨高旺

杰益  

莫福  

伟伟

李福  
'''

# 注意:有的人名 可能是另外一个人名的一部分,
# 比如 伟伟 是王伟伟 的一部分, 
# 所以我们不能 通过 'name in str1' 这样的方式判断


# 先定义一个函数,可以把参数字符串中的人名都放入一个列表中

def getNameList(namesStr):
    tmp = namesStr.splitlines()

    # 去掉其中的空行和人名前后的空格
    names = []
    for name in tmp:
        name = name.strip()
        if name == '':
            continue

        names.append(name)

    return names


names1 = getNameList(str1)
names2 = getNameList(str2)

print('str1中独有的人名是:')
for name in names1:
    if name not in names2:
        print(name)

print('\n\n')

print('str2中独有的人名是:')
for name in names2:
    if name not in names1:
        print(name)    



题目2-答案

ageTable = '''
    诸葛亮, 28
    刘备, 48
    刘琦, 25
    赵云, 32
    张飞, 43
    关羽, 45
'''



# 先转换成如下格式的列表
# ageList = [
#     '诸葛亮, 28',
#     '刘备, 48',
#     '赵云, 42',
#     ....
# ]

ageList = []
for item  in ageTable.split('\n'):
    # 跳过空行
    if item.strip()  == '':
        continue

    ageList.append(item)

g30 = []  # 大于30岁人员列表
l30 = []  # 小于30岁人员列表
for oneman  in ageList:
    name,age   = oneman.split(',')
    age = int(age.strip())
    name = name.strip()
    if age >= 30:
        g30.append(name)
    else:
        l30.append(name)


print('大于等于30岁的人有:')
for man in g30:
    print(man)


print('\n小于30岁的人有:')
for man in l30:
    print(man)