【Python 百练成钢】报时助手、成绩分析、购物清单、字符串对比、FJ的字符串

简介: 【Python 百练成钢】报时助手、成绩分析、购物清单、字符串对比、FJ的字符串

前言


几道入门级的算法题希望大家可以拿捏👽

报时助手(字典的使用)

成绩分析(浮点数的四舍五入)

购物清单字符串处理)

字符串对比(字符串处理)

FJ的字符串(队列的使用、队列与字符串的转化)

大家如有什么疑问评论区留言吧🌼


报时助手🌺


问题描述


问题描述

 给定当前的时间,请用英文的读法将它读出来。

 时间用时h和分m表示,在英文的读法中,读一个时间的方法是:

 如果m为0,则将时读出来,然后加上“o’clock”,如3:00读作“three o’clock”。

 如果m不为0,则将时读出来,然后将分读出来,如5:30读作“five thirty”。

 时和分的读法使用的是英文数字的读法,其中0~20读作:

 0:zero, 1: one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven, 8:eight, 9:nine, 10:ten, 11:eleven, 12:twelve, 13:thirteen, 14:fourteen, 15:fifteen, 16:sixteen, 17:seventeen, 18:eighteen, 19:nineteen, 20:twenty。

 30读作thirty,40读作forty,50读作fifty。

 对于大于20小于60的数字,首先读整十的数,然后再加上个位数。如31首先读30再加1的读法,读作“thirty one”。

 按上面的规则21:54读作“twenty one fifty four”,9:07读作“nine seven”,0:15读作“zero fifteen”。

输入格式

 输入包含两个非负整数h和m,表示时间的时和分。非零的数字前没有前导0。h小于24,m小于60。

输出格式

 输出时间时刻的英文。

样例输入

0 15

样例输出

zero fifteen


代码实现


mdic={0:"zero", 1:"one", 2:"two", 3:"three", 4:"four", 5:"five", 6:"six", 7:"seven", 8:"eight", 9:"nine", 
10:"ten", 11:"eleven", 12:"twelve", 13:"thirteen", 14:"fourteen", 15:"fifteen", 16:"sixteen", 17:"seventeen",
18:"eighteen", 19:"nineteen", 20:"twenty",30:"thirty",40:"forty",50:"fifty"}
m,n=map(int,input().split())
ans=[]
if m//20!=0:
    ans.append(mdic[m//10*10])
    ans.append(mdic[m%10])
else:
    ans.append(mdic[m])
if n==0:
    ans.append("o'clock")
elif n//20!=0:
    ans.append(mdic[n//10*10])
    ans.append(mdic[n%10])
else:
    ans.append(mdic[n])
flag=True
for i in ans:
    if flag:
        print(i,end="")
        flag=False
    else:
        print(" ",i,end="",sep="")


成绩分析🌺


问题描述


小蓝给学生们组织了一场考试,卷面总分为100分,每个学生的得分都是

个0到100的整数。

请计算这次考试的最高分、最低分和平均分。

输入描述

输入的第一行包含一个整数n(1 ≤n≤104),表示考试人数。

接下来n行,每行包含-个0至100的整数,示一个学生的得分。

输出描述

输出三行。

第一行包含一个整数,表示最高分。

第二行包含一个整数,表示最低分。

第三行包含一个实数,四舍五入保留正好两位小数,示平均分。

样例输入:

7

80

92

56

74

88

99

10

样例输出:

99

10

71.29

‘’’


问题分析


小数点四舍五入的另一种方法。


代码实现

n=float(input())
lis=list()
for i in range(n):
  lis.append(int(input()))
print(max(lis))
print(min(lis))
print("{:.2f}".format(sum(lis)/n))


购物清单🌺


问题描述


小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。

这不,大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。

小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。

现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。

取款机只能提供 100 元面额的纸币。小明想尽可能少取些现金,够用就行了。 你的任务是计算出,小明最少需要取多少现金。

以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。

清单如下:

**** 180.90 88折

**** 10.25 65折

**** 56.14 9折

**** 104.65 9折

**** 100.30 88折

**** 297.15 半价

**** 26.75 65折

**** 130.62 半价

**** 240.28 58折

**** 270.62 8折

**** 115.87 88折

**** 247.34 95折

**** 73.21 9折

**** 101.00 半价

**** 79.54 半价

**** 278.44 7折

**** 199.26 半价

**** 12.97 9折

**** 166.30 78折

**** 125.50 58折

**** 84.98 9折

**** 113.35 68折

**** 166.57 半价

**** 42.56 9折

**** 81.90 95折

**** 131.78 8折

**** 255.89 78折

**** 109.17 9折

**** 146.69 68折

**** 139.33 65折

**** 141.16 78折

**** 154.74 8折

**** 59.42 8折

**** 85.44 68折

**** 293.70 88折

**** 261.79 65折

**** 11.30 88折

**** 268.27 58折

**** 128.29 88折

**** 251.03 8折

**** 208.39 75折

**** 128.88 75折

**** 62.06 9折

**** 225.87 75折

**** 12.89 75折

**** 34.28 75折

**** 62.16 58折

**** 129.12 半价

**** 218.37 半价

**** 289.69 8折


问题分析


本题目意在让我们对字符串进行解析,我认为可以使用strip进行切割,

切割后以步长为3开始遍历,去除折扣,将总价乘以折扣加在总数上


代码实现


data = '''
****     180.90       88折
****      10.25       65折
****      56.14        9折
****     104.65        9折
****     100.30       88折
****     297.15        半价
****      26.75       65折
****     130.62        半价
****     240.28       58折
****     270.62        8折
****     115.87       88折
****     247.34       95折
****      73.21        9折
****     101.00        半价
****      79.54        半价
****     278.44        7折
****     199.26        半价
****      12.97        9折
****     166.30       78折
****     125.50       58折
****      84.98        9折
****     113.35       68折
****     166.57        半价
****      42.56        9折
****      81.90       95折
****     131.78        8折
****     255.89       78折
****     109.17        9折
****     146.69       68折
****     139.33       65折
****     141.16       78折
****     154.74        8折
****      59.42        8折
****      85.44       68折
****     293.70       88折
****     261.79       65折
****      11.30       88折
****     268.27       58折
****     128.29       88折
****     251.03        8折
****     208.39       75折
****     128.88       75折
****      62.06        9折
****     225.87       75折
****      12.89       75折
****      34.28       75折
****      62.16       58折
****     129.12        半价
****     218.37        半价
****     289.69        8折
'''
mylis=data.split()
ans=0.0
for i in range(0,len(mylis),3):
    p=float(mylis[i+1])
    if len(mylis[i+2])==2:
        if mylis[i+2]=="半价":
            ans+=p*0.5
        else:
            ans+=p*float(mylis[i+2][0])*0.1
    else:
        ans+=p*float(mylis[i+2][0:2])*0.01
if ans%100!=0:
    ans=(ans+100)//100*100
print(ans)


字符串对比🌺


问题描述


问题描述

 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:

 1:两个字符串长度不等。比如 Beijing 和 Hebei

 2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing

 3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing

 4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如 Beijing 和 Nanjing

 编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。

输入格式

 包括两行,每行都是一个字符串

输出格式

 仅有一个数字,表明这两个字符串的关系编号

样例输入

BEIjing

beiJing

样例输出

3


问题分析


模拟几种情况即可


代码实现


s1=input()
s2=input()
if len(s1)!=len(s2):
    print(1)
else:
    if s1==s2:
        print(2)
    elif s1.lower()==s2.lower():
        print(3)
    else:
        print(4)


FJ的字符串🌺


问题描述


问题描述

 FJ在沙盘上写了这样一些字符串:

 A1 = “A”

 A2 = “ABA”

 A3 = “ABACABA”

 A4 = “ABACABADABACABA”

 … …

 你能找出其中的规律并写所有的数列AN吗?

输入格式

 仅有一个数:N ≤ 26。

输出格式

 请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。

样例输入

3

样例输出

ABACABA


问题分析


使用双端队列,一步一步向里面添加上一步的东西


代码实现


from collections import deque
ans=deque()
dic={1:"A",2:"B",3:"C",4:"D",5:"E",6:"F",7:"G",8:"H",9:"I",10:"J",11:"K",12:"L",13:"M",14:"N",15:"O",16:"P",17:"Q",18:"R",19:"S",20:"T",21:"U",22:"V",23:"W",24:"X",25:"Y",26:"Z"}
n=int(input())
temp=[]
for i in range(1,n+1):
    ans=deque()
    ans.append(dic[i])
    ans.extend(temp)
    ans.extendleft(temp)
    temp=ans.copy()
print("".join(ans))


相关文章
|
18天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费模式分析的深度学习模型
使用Python实现智能食品消费模式分析的深度学习模型
111 70
|
1月前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
20天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费习惯分析的深度学习模型
使用Python实现智能食品消费习惯分析的深度学习模型
124 68
|
25天前
|
Python
在 Python 中,如何将日期时间类型转换为字符串?
在 Python 中,如何将日期时间类型转换为字符串?
119 64
|
16天前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费市场分析的深度学习模型
使用Python实现智能食品消费市场分析的深度学习模型
93 36
|
10天前
|
数据可视化 算法 数据挖掘
Python量化投资实践:基于蒙特卡洛模拟的投资组合风险建模与分析
蒙特卡洛模拟是一种利用重复随机抽样解决确定性问题的计算方法,广泛应用于金融领域的不确定性建模和风险评估。本文介绍如何使用Python和EODHD API获取历史交易数据,通过模拟生成未来价格路径,分析投资风险与收益,包括VaR和CVaR计算,以辅助投资者制定合理决策。
57 15
|
14天前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费趋势分析的深度学习模型
使用Python实现智能食品消费趋势分析的深度学习模型
72 18
|
16天前
|
存储 测试技术 Python
Python 中别再用 ‘+‘ 拼接字符串了!
通过选择合适的字符串拼接方法,可以显著提升 Python 代码的效率和可读性。在实际开发中,根据具体需求和场景选择最佳的方法,避免不必要的性能损失。
38 5
|
20天前
|
Python
使用Python计算字符串的SHA-256散列值
使用Python计算字符串的SHA-256散列值
24 7
|
23天前
|
测试技术 开发者 Python
使用Python解析和分析源代码
本文介绍了如何使用Python的`ast`模块解析和分析Python源代码,包括安装准备、解析源代码、分析抽象语法树(AST)等步骤,展示了通过自定义`NodeVisitor`类遍历AST并提取信息的方法,为代码质量提升和自动化工具开发提供基础。
39 8