西郵-計算機學院機試題
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)