【站内题解】十六道csdn每日一练Python题解(上)

简介: 请编写一个死循环,每次循环开始先使用print()语句一行输出字符串"Please tell me your height!Enter ‘quit’ to end the program."。

题目一: 游乐园的门票

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)


相关文章
|
21天前
|
存储 人工智能 测试技术
python自动化测试实战 —— CSDN的Web页面自动化测试
python自动化测试实战 —— CSDN的Web页面自动化测试
|
21天前
|
数据采集 JSON 数据可视化
python_selenuim获取csdn新星赛道选手所在城市用echarts地图显示
python_selenuim获取csdn新星赛道选手所在城市用echarts地图显示
9 1
|
21天前
|
Python 人工智能
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
56 1
讯飞星火、文心一言和通义千问同时编“贪吃蛇”游戏,谁会胜出?
|
21天前
|
Shell Unix Linux
Linux 终端命令之文件浏览(3) less
Linux 终端命令之文件浏览(3) less
38 0
Linux 终端命令之文件浏览(3) less
|
21天前
|
Rust
Rust 编程小技巧摘选(8)
Rust 编程小技巧摘选(8)
106 0
Rust 编程小技巧摘选(8)
|
21天前
|
算法 C++ 机器人
力扣 C++|一题多解之动态规划专题(1)
力扣 C++|一题多解之动态规划专题(1)
43 0
力扣 C++|一题多解之动态规划专题(1)
|
21天前
|
C++ Python 索引
Python Numpy入门基础(二)数组操作
Python Numpy入门基础(二)数组操作
32 0
Python Numpy入门基础(二)数组操作
|
21天前
|
C++ 存储
力扣C++|一题多解之数学题专场(1)
力扣C++|一题多解之数学题专场(1)
24 0
力扣C++|一题多解之数学题专场(1)
|
21天前
|
Java Go C++
Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分
Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分
32 0
Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分
|
21天前
|
Java Go C++
Golang每日一练(leetDay0114) 矩阵中的最长递增路径、按要求补齐数组
Golang每日一练(leetDay0114) 矩阵中的最长递增路径、按要求补齐数组
38 0
Golang每日一练(leetDay0114) 矩阵中的最长递增路径、按要求补齐数组