题目一: 游乐园的门票
1. 问题描述
某游乐园院按照游客身高段收取票价:不到 1.0米 的游客免费; 1.0~1.2 米的游客为 80 元;超过 1.2 米的游客为 150 元。
请编写一个死循环,每次循环开始先使用print()语句一行输出字符串"Please tell me your height!Enter ‘quit’ to end the program."。
如果读取到的字符串等于’quit’,则使用 break 语句退出循环,否则将字符串转成浮点数,如果小于1.0米,则使用print()语句一行输出字符串’Your admission cost is 0 yuan.‘;
如果大于等于1.0米且小于等于1.2米,则使用print()语句一行输出字符串’Your admission cost is 80 yuan.’;
如果大于1.2米,则使用print()语句一行输出字符串’Your admission cost is 150 yuan.‘。
然后本次循环结束,再次进入 while 循环中的条件测试。
2. 输入描述
保证每一行的输入只有浮点数或字符串’quit’,且保证数字合法,范围在[0, 3]。
3. 输出描述
按题目描述进行输出即可。
4. 示例
4.1 输入
0.5
1.2
quit
4.2 输出
Please tell me your height!
Enter ‘quit’ to end the program.
5. 答案
5.1 解法一
while True: try: print("Please tell me your height!\nEnter 'quit' to end the program.") a = input() if a == 'quit': break elif float(a) < 1.0: print('Your admission cost is 0 yuan.') elif 1.0 < float(a) <= 1.2: print('Your admission cost is 80 yuan.') else: print('Your admission cost is 150 yuan.') except: break
5.2 解法二
operators_dict = {'<': 'less than','==': 'equal'} print('Here is the original dict:') for k in sorted(operators_dict): print(f'Operator {k} means {operators_dict[k]}.') print() operators_dict['>'] = 'greater than' print('The dict was changed to:') for k in sorted(operators_dict): print(f'Operator {k} means {operators_dict[k]}.')
题目二:小桥流水人家
1. 问题描述
在n*m的地图上,存在一个喷水点(x,y). 如果相邻的位置低于有水的地方,水就能流到相邻的某位置。 已知各个地方的海拔高度,求水的最大覆盖个格子数。
2. 输入描述
第一行输入n,m,x,y.(1<=n,m<=1000,1<=x<=n,1<=y<=m)
以下n行每行m个整数,表示每个格子的海拔.(1<=h<=1000)
3. 输出描述
输出最大覆盖格子数
4. 示例
4.1 输入
3 5 2 3
3 4 1 5 1
2 3 3 4 7
4 1 4 1 1
4.2 输出
6
5. 答案
class Solution: def __init__(self) -> None: pass def changshi(self, vector, matrix, n, m, a, b): ll = [[-1, 0], [1, 0], [0, -1], [0, 1]] for i in range(4): # 四边寻找 上下右左 a1 = a + ll[i][0] b1 = b + ll[i][1] if 0 <= a1 <= n - 1 and 0 <= b1 <= m - 1: if vector[a][b] > vector[a1][b1]: # 若找到 matrix[a1][b1] = 1 # 标记位置 self.changshi(vector, matrix, n, m, a1, b1) return matrix def solution(self, n, m, x, y, vector): result = 0 a, b = n - y, x - 1 matrix = [[0 for i in range(m)] for i in range(n)] matrix[n - y][x - 1] = 1 matrix = self.changshi(vector, matrix, n, m, a, b) for i in range(n): for j in range(m): if matrix[i][j] == 1: result = result + 1 print(matrix) return result if __name__ == "__main__": arr_temp = [int(item) for item in input().strip().split()] n = int(arr_temp[0]) m = int(arr_temp[1]) x = int(arr_temp[2]) y = int(arr_temp[3]) vector = [] for i in range(n): vector.append([int(item) for item in input().strip().split()]) sol = Solution() result = sol.solution(n, m, x, y, vector) print(result)
题目三:小艺读书
1. 问题描述
书是人类进步的阶梯。
小艺每周因为工作的原因会选择性的每天多读几页或者少读几页。
小艺想知道一本n页的书她会在周几读完。
2. 输入描述
第一行输入n(1<=n<=1000);
第二行输入7个整数,分别表示周一~周日的读书页数p(0<=p<=1000)。(不考虑7个整数都为0的情况)
3. 输出描述
输出答案。(1-7)
4. 示例
4.1 输入
100
15 20 20 15 10 30 45
4.2 输出
6
5. 答案
class Solution: def __init__(self) -> None: pass def solution(self, n, pages): result = None # TODO: 请在此编写代码 page=sum(pages) book=n%page for i in range(7): book-=pages[i] if(book<=0): result=i+1 break return result if __name__ == "__main__": n = int(input().strip()) pages = [int(item) for item in input().strip().split()] sol = Solution() result = sol.solution(n, pages) print(result)
题目四:鬼画符门之宗门大比
1. 问题描述
给定整数序列A。
求在整数序列A中连续权值最大的子序列的权值。
2. 输入描述
第一行输入整数n.(1<=n<=1000)
第二行输入n整数a。(-1000<=a<=1000)
3. 输出描述
输出子序列最大权值。
4. 示例
4.1 示例一
4.1.1 输入
5
-1 2 3 -2 4
4.1.2 输出
7
4.2 示例二
4.2.1 输入
7
1 -4 6 7 -10 8 0
4.2.2 输出
11
5. 答案
class Solution: def __init__(self) -> None: pass def solution(self, n, arr): result = None # TODO: 请在此编写代码 num=[] m=0 for i in arr: m+=i if m<=0: m=0 else: num.append(m) result=max(num) return result if __name__ == "__main__": n = int(input().strip()) arr = [int(item) for item in input().strip().split()] sol = Solution() result = sol.solution(n, arr) print(result)
题目五:硬币划分
1. 问题描述
有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱(n<100000),有多少中组合可以组成n分钱?
2. 输入描述
输入整数n.(1<=n<=100000)
3. 输出描述
输出组合数,答案对1e9+7取模。
4. 示例
4.1 输入
13
4.2 输出
16
5. 答案
class Solution: def __init__(self) -> None: pass def solution(self, n): result = None # TODO: 请在此编写代码 coins=[1,2,5,10] arr=[0]*1000001 arr[0]=1 for i in coins: for j in range(i,n+1): arr[j]=(arr[j]+arr[j-i])%(1e9+7) result=int(arr[n]) return result if __name__ == "__main__": n = int(input().strip()) sol = Solution() result = sol.solution(n) print(result)
题目六:饿龙咆哮-逃离城堡
1. 题目描述
小艺酱误入龙族结界,被恶龙带回城堡,小艺酱决定逃离城堡,逃离龙族结界。总路程为c, 小艺酱的速度是vp,饿龙速度为vd。饿龙会在t小时后发现小艺酱出逃。小艺酱担心自己跑不出去,准备了好多珍宝。 每当饿龙追上自己的时候小艺酱就会丢下一个珍宝,饿龙捡到珍宝会返回自己的城堡进行研究,研究f小时后,再出城堡追赶小艺。小艺想知道自己至少需要丢多少珍宝才能让自己安全逃出结界。
2. 输入描述
输入整数vp,vd,t,f,c。(1<=vp,cd<=100,1<=t,f<=10,1<=c<=1000)
3. 输出描述
输出答案。
4. 示例
4.1 输入
1
2
1
1
10
4.2 输出
2
5. 答案
class Solution: def __init__(self) -> None: pass def solution(self, vp, vd, t, f, c): result = None # TODO: 请在此编写代码 result=0 sp=vp*t while sp<c: if vd-vp<=0: return 0 rt=sp/(vd-vp) sp+=vp*rt if sp<c: result+=1 sp+=vp*(rt+f) return result if __name__ == "__main__": vp = int(input().strip()) vd = int(input().strip()) t = int(input().strip()) f = int(input().strip()) c = int(input().strip()) sol = Solution() result = sol.solution(vp, vd, t, f, c) print(result)
题目七:严查枪火
1. 题目描述
X国最近开始严管枪火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。 现在小Q查获了一批违禁物品其中部分是枪支。
小Q想知道自己需要按照私藏枪火来关押多少人。 (只有以上三种枪被视为违法)
2. 输入描述
第一行输入整数n.(1<=n<=10000)表示携带违禁物品的人数。
以下n行表示违禁物品的名称。
3. 输出描述
输出需要按照私藏枪火来关押的人。
4. 示例
4.1 输入
3
Dsd
ak
232asd
4.2 输出
1
5. 答案
class Solution: def __init__(self) -> None: pass def solution(self, n, vector): result = None # TODO: 请在此编写代码 result = 0 for i in range(n): if vector[i]=="ak" or vector[i]=="m4a1" or vector[i]=="skr": result+=1 return result if __name__ == "__main__": n = int(input().strip()) vector = [] for i in range(n): vector.append(input().strip()) s = Solution() result = s.solution(n, vector) print(result)
题目八:鬼画符门
1. 题目描述
鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理, 但是这次鬼艺接手了, 你能帮鬼艺写一个程序统计每年消耗数量最多的鬼画符吗?
2. 输入描述
第一行输入整数n.(1<=n<=1000)
以下n行输入n个字符串。
3. 输出描述
输出答案字符串。
4. 示例
4.1 输入
5
red
red
green
grenn
hen
4.2 输出
red
class Solution: def __init__(self) -> None: pass def solution(self, n, vector): result = None # TODO: 请在此编写代码 dict={} for i in vector: if i not in dict: dict[i]=1 else: dict[i]+=1 t=max(dict.values()) for k,v in dict.items(): if v==t: result=k break return result if __name__ == "__main__": n = int(input().strip()) vector = [] for i in range(n): vector.append(input().strip()) s = Solution() result = s.solution(n, vector) print(result)