【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))


相关文章
|
1月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
57 4
|
5天前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
23天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
7天前
|
数据采集 存储 JSON
Python爬虫开发中的分析与方案制定
Python爬虫开发中的分析与方案制定
|
14天前
|
数据可视化 开发者 Python
Python GUI开发:Tkinter与PyQt的实战应用与对比分析
【10月更文挑战第26天】本文介绍了Python中两种常用的GUI工具包——Tkinter和PyQt。Tkinter内置于Python标准库,适合初学者快速上手,提供基本的GUI组件和方法。PyQt基于Qt库,功能强大且灵活,适用于创建复杂的GUI应用程序。通过实战示例和对比分析,帮助开发者选择合适的工具包以满足项目需求。
55 7
|
1月前
|
数据可视化 算法 Python
基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析
本文介绍了如何利用Python脚本结合动态模态分解(DMD)技术,分析从OpenFOAM模拟中提取的二维切片数据,以深入理解流体动力学现象。通过PyVista库处理VTK格式的模拟数据,进行POD和DMD分析,揭示流场中的主要能量结构及动态特征。此方法为研究复杂流动系统提供了有力工具。
63 2
基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析
|
14天前
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
22 3
|
1月前
|
Python
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
本篇将详细介绍Python中的字符串类型及其常见操作,包括字符串的定义、转义字符的使用、字符串的连接与格式化、字符串的重复和切片、不可变性、编码与解码以及常用内置方法等。通过本篇学习,用户将掌握字符串的操作技巧,并能灵活处理文本数据。
53 1
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
|
14天前
|
存储 机器学习/深度学习 算法
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第26天】NumPy和SciPy是Python科学计算领域的两大核心库。NumPy提供高效的多维数组对象和丰富的数学函数,而SciPy则在此基础上提供了更多高级的科学计算功能,如数值积分、优化和统计等。两者结合使Python在科学计算中具有极高的效率和广泛的应用。
31 2
|
19天前
|
数据采集 机器学习/深度学习 搜索推荐
Python自动化:关键词密度分析与搜索引擎优化
Python自动化:关键词密度分析与搜索引擎优化