Python练习:循环

题目1

有如下的2个字符串


str1 = '''
熊宁
杰益

王伟伟

青芳

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

骆龙 

韩旭 
杨高旺

杰益  

莫福  

伟伟

李福  
'''

请写一个程序

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

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

答案与解析

答案视频讲解1 - 伪代码理清思路

答案视频讲解2 - 根据伪代码实现程序



题目2

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

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

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

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

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

答案与解析

答案视频讲解



题目3

关羽 和张飞 正在玩 剪刀石头布 的游戏。

写一个函数calculate_score, 参数是列表, 里面包含了n个元素也是列表。

比如 像这样 [[“剪刀”, “石头”], [“布”, “剪刀”], [“剪刀”, “剪刀”]]

n 个元素代表 n局 比赛,用列表表示,比如 [“剪刀”, “石头”]

其中第1个元素表示关羽打出的手势,第2个元素是张飞打出的手势。

函数要计算出谁赢得次数多,输出比赛结果。

如果他们打成平手,输出“平局”。

比如:

calculate_score([["剪刀", "石头"], ["布", "剪刀"], ["剪刀", "剪刀"]]) 
输出应该是: 张飞 3局赢了2局,平手一局,张飞胜出


calculate_score([["布", "石头"], ["石头", "剪刀"], ["石头", "剪刀"]]) 
输出应该是: 关羽 3局赢了3局,关羽胜出

答案与解析

视频讲解

和VIP学员讲解本题的开发思路



题目4

请写一个打印出圣诞树的函数, 该函数参数是一个数字,表示要打印多少层的圣诞树。

比如

tree(1) 
打印结果是:

#


tree(2) 
打印结果是:
 #
###


tree(5) 
打印结果是:
    #
   ###
  #####
 #######
#########

VIP 学员请联系老师,获取参考答案和解题思路


扫码分享给朋友,一起学更有动力哦



















































题目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)