文章目录
- 1. 第一个元素是数据标识,第二个元素的数值必须大于等于50才返回,不够59往后累加,加到最后如果不够50也直接返回,因为没有可加的数据了。
- 2. 通过字典推导式,将下面的字符串转换成字典类型的数据
- 3. 一个球从100米高度自由落下,每次落地后反跳回原高度的一半在落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
- 4. 有一对兔子,第三个月其每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子(意味着生长期为2个月),假如兔子都不死,问每个月的兔子总数为多少?
- 5. 小明有100元钱,打算买100本书,A类书书籍5元一本,B类书籍3元一本,C类书籍1元两本,请用程序算出小明一共有多少种买法?
- 6. 通过代码实现一个注册的流程,基本要求:
- 7. 实现剪刀石头布游戏(),提示用户输入要出的拳 :石头(1)/剪刀(2)/布(3)/退出(4) 电脑随机出拳比较胜负,显示 用户胜、负还是平局。
1. 第一个元素是数据标识,第二个元素的数值必须大于等于50才返回,不够59往后累加,加到最后如果不够50也直接返回,因为没有可加的数据了。
例子1:
a = [[1,3],[2,51],[3,49],[4,42],[5,42]] # 入参
a1 = [[2,54],[4,91],[5,42]] # 返回
例子2:
b = [[1,50],[2,5],[3,10],[4,42],[5,42],[6,10]] # 入参
b1 = [[1,50],[4,57],[6,52]] # 返回
def data(list):
sum_ = 0
new_l = []
for k, v in list:
sum_ += v
if sum_ >= 50:
new_l.append([k,sum_])
sum_ = 0
# 说明该元素是数组的最后一个,那么没满50也要输出
elif k == len(list):
new_l.append([k,sum_])
return new_l
2. 通过字典推导式,将下面的字符串转换成字典类型的数据
cookie_str=‘PHPSESSID=et4a33og7nbftv60j3v9m86cro; Hm_lvt_51e3cc975b346e7705d8c255164036b3=1561553685; Hm_lpvt_51e3cc975b346e7705d8c255164036b3=1561553685’
new_d = {i.split('=')[0]:i.split('=')[1] for i in cookie_str.split(';')}
print(new_d)
3. 一个球从100米高度自由落下,每次落地后反跳回原高度的一半在落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
# 一个球从100米高度自由落下,每次落地后反跳回原高度的一半在落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
# 第一次落地,球的路径长度为 100 米
# 第二次落地,球首先反弹了 100/2 米, 然后又下落了 100/2 米,即反弹高度的2倍。
# 第三次落地,球先反弹了 上一次反弹高度/2 米,然后又下落了 上一次反弹高度/2 米,也是反弹高度的2倍
# 那么我们可以先将每次的反弹高度利用函数算出,经过的路径可以依据此函数算出
# 求第n次落地的反弹高度
def h(n):
if n == 1:
return 100/2
else:
return h(n-1)/2
# 求第n次落地经过的路径长度
def l(n):
if n == 1:
return 100
else:
return l(n-1) + h(n-1) * 2
print('第10次落地的反弹高度为:%s' %h(10))
print('第10次落地所经过的路径长度为:%s' %l(10))
结果:
第10次落地的反弹高度为:0.09765625
第10次落地所经过的路径长度为:299.609375
4. 有一对兔子,第三个月其每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子(意味着生长期为2个月),假如兔子都不死,问每个月的兔子总数为多少?
# 第一个月兔子数 2
# 第二个月兔子数 2
# 第三个月兔子数 4
# 第四个月兔子数 6
# 第五个月兔子数 10
# 第六个月兔子数 16
# 从上述数值可以看出,其实这是一个斐波拉切数列,即每次的值都为前两次值之和。
def fib(n):
if (n == 1) | (n == 2):
return 2
else:
return fib(n - 1) + fib(n - 2)
5. 小明有100元钱,打算买100本书,A类书书籍5元一本,B类书籍3元一本,C类书籍1元两本,请用程序算出小明一共有多少种买法?
# 这道题可以直接使用循环算出,A类最多买20本,B类最多买33本,c类则应该为 100-a-b
count = 0
for a in range(21):
for b in range(33):
c = 100 - a - b
if 5 * a + 3 * b + 0.5 * c <= 100:
count += 1
print("一共有{}种买法".format(count))
6. 通过代码实现一个注册的流程,基本要求:
1、运行程序,提示用户,输入用户名,输入密码,再次确认密码。
2、判读用户名有没有被注册过,如果用户名被注册过了,那么打印结果该用户名已经被注册。
3、用户名没有被注册过,则判断两次输入的密码是否一致,一致的话则注册成功,否则给出对应的提示。
4、下面是已注册的两个账户,注册成功的账号密码按下面的形式保存到列表users中
提示:要有for-else语句才能实现
users = [{"user":"py27","pwd":"lemonban"},{"user":"py28","pwd":"lemonban2"}]
flag = True
while flag:
name = input('请输入您的用户名')
for dic in users:
if name == dic['user']:
print('该用户名已经被注册')
break
else:
pwd = input('请输入您的密码')
repwd = input('请再次输入您的密码')
if pwd == repwd:
print('您的账户注册成功')
flag = False
newuser = {"user": name, "pwd": pwd}
users.append(newuser)
else:
print('两次输入的密码不一致')
print(users)
7. 实现剪刀石头布游戏(),提示用户输入要出的拳 :石头(1)/剪刀(2)/布(3)/退出(4) 电脑随机出拳比较胜负,显示 用户胜、负还是平局。
思路:
用户 出1 电脑出 2 ,用户胜
用户 出2 电脑出 3 ,用户胜
用户 出3 电脑出 1 ,用户胜
import random
print('-------石头剪刀布游戏开始-----')
try:
li = ['石头', '剪刀', '布']
while True:
n = int(input('''请按下面提示出拳:
石头【1】 剪刀【2】 布【3】 退出游戏【4】
请输入您的选项:
'''))
if n in [1, 2, 3]:
computer = random.randint(1, 3)
if computer == n:
print(F'您的出拳为:{li[int(n) - 1]},电脑出拳为:{li[int(computer) - 1]},平局')
elif (computer - n == 1) or (computer - n == -2):
print(F'您的出拳为:{li[int(n) - 1]},电脑出拳为:{li[int(computer) - 1]},您胜利了')
else:
print(F'您的出拳为:{li[int(n) - 1]},电脑出拳为:{li[int(computer) - 1]},您输了')
elif n == 4:
print('游戏结束')
break
else:
print('请输入1-4之间的数字: ', end='')
except Exception as e:
print('请输入1-4之间的数字')
最后总结一下:
如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:软件测试技术群:593462778,群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。
作者:暗潮汹涌
原创不易,欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。