西邮-计算机学院机试题
Author : Hua
2021.05.19
第一题
while循环
1.酷暑难耐,好消息传来,毛坡村开业了一家泳池,小伙伴们相继去戏水,狗剩是个旱鸭子,在损友们强拉硬拽多次呛水后,勉强学会了狗刨。可是他很难过地发现,自己的力气不够,游泳好累哦,已知狗剩第一步能游 2 米,可是随着越来越累,力气越来越小,接下来的每一步只能游出上一步距离的98%。现在狗剩想知道,如果游到距离 x 米的地方,他需要游多少步呢,请你编程解决这个问题。输入格式:输入一个数字(不一定是整数,小于 100m),表示要游的目标距离。输出格式:输出一个整数,表示狗剩一共需要游多少步。
输入样例:4.3
输出样例:3
#! /usr/bin/python3
# _*_ coding: utf-8 _*_
# @Author:Hua
# @2021.05.19
aim_distance = float(input("please input aim distance: "))
step = 0
distance = 0
while aim_distance > distance :
distance = distance + 2 * (0.98 ** step)
step = step + 1
print(step)
第二题
字符串与列表的转换、for循环
2.比目鱼是两只眼睛长在一边的奇鱼,被认为需两鱼并肩而行,故名比目鱼,人比人,气死人;鱼比鱼,难死鱼。小鱼们最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度,参赛的鱼被从左到右排成一排,头部朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然整数越大,表示这只鱼越可爱,而且任意两只鱼的可爱程度可能一样,由于所有的鱼头都朝向左边,所以每只鱼只能看见在它左边的鱼的可爱程度,它们心里都在计算,在自己的能力范围内有多少只鱼不如自己可爱呢。请你帮这些可爱但是鱼脑不够用的小鱼们计算一下。
输入格式:第一行输入一个整数 n,表示鱼的数目,第二行内输入 n 个整数,用空格间隔,依次表示从左到右每只小鱼的可爱程度。
输出格式:在一行内输出 n 个整数,用空格间隔,依次表示每只小鱼眼中有多少只鱼不如自己可爱。
输入样例:
6
4 3 0 5 1 2
输出样例:
0 0 0 3 1 2
#! /usr/bin/python3
# _*_ coding: utf-8 _*_
# @Author:Hua
# @2021.05.19
#输入鱼🐟的总数量,input()、int()
#输入每条鱼的分数,使用 .split() ,将字符串fish_goal以空格" " 为间隔切分为列表存储
#定义一个list用于存放输出值
fish_number = int(input("input the number of fish: "))
fish_goal = input("input goal of each fish: ")
fish_goal_list = fish_goal.split(" ")
list = [0]
#遍历每一条鱼🐟,第一条鱼默认为0,所以从第二条鱼开始,number存放鱼认为分数低于自己的鱼的数量
for i in range(1,fish_number):
number = 0
#对该鱼的前置位进行遍历,从第0条鱼开始到自己前一条鱼结束,若前面的鱼比自己分数小,则number+1
for j in range(0,i):
if fish_goal_list[j] < fish_goal_list[i]:
number = number + 1
list.append(number)
#使用 ' '.join(list) 将list列表以空隔为间隔转化为字符串输出
#出现报错
str = ' '.join(list)
print(str)
input the number of fish: 6
input goal of each fish: 4 3 0 5 1 2
Traceback (most recent call last):
File "d:/Python/Untitled-2.py", line 29, in <module>
str = ' '.join(list)
TypeError: sequence item 0: expected str instance, int found
#但是当list中含有数字时,无法转换为字符串,所以遍历list并以字符进行输出
str = ' '.join('%s' %i for i in list)
print(str)