题目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实战班学员请联系老师获取补充练习,并做阶段学习交流
题目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)
题目3-答案
def calculate_score(rounds):
guan_win_round = 0
zhang_win_round = 0
ping_round = 0
# 取出列表里面每一局round,进行如下处理:
for round in rounds:
guan = round[0]
zhang = round[1]
# 判断谁赢
win = None
if guan == '剪刀':
if zhang == '石头':
win = 'z'
elif zhang == '剪刀':
win = '='
elif zhang == '布':
win = 'g'
elif guan == '石头':
if zhang == '石头':
win = '='
elif zhang == '剪刀':
win = 'g'
elif zhang == '布':
win = 'z'
elif guan == '布':
if zhang == '石头':
win = 'g'
elif zhang == '剪刀':
win = 'z'
elif zhang == '布':
win = '='
if win == 'g':
print('关羽赢')
guan_win_round += 1
elif win == 'z':
print('张飞赢')
zhang_win_round += 1
elif win == '=':
print('平局')
ping_round += 1
print('\n=============\n')
print(f'关羽赢{guan_win_round}次')
print(f'张飞赢{zhang_win_round}次')
print(f'平局{ping_round}次')
if guan_win_round> zhang_win_round:
print('关羽赢')
elif guan_win_round < zhang_win_round:
print('张飞赢')
else:
print('平局')
calculate_score([['剪刀', '石头'], ['布', '剪刀'], ['剪刀', '剪刀']])