赞
踩
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。
输入的第一行包含一个整数 � (1≤�≤104)n (1≤n≤104),表示考试人数。
接下来 �n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。
示例
输入
- 7
- 80
- 92
- 56
- 74
- 88
- 100
- 0
输出
- 71%
- 43%
- import os
- import sys
-
- n = int(input())
- jige = 0
- youxiu = 0
- for i in range(n):
- a = int(input())
- if a>=60:
- jige += 1
- if a>=85:
- youxiu += 1
- jigelv = round(jige/n * 100) #ROUND 函数将数字四舍五入到指定的位数。
- youxiulv = round(youxiu/n * 100)
- print(f'{jigelv}%') # f' '格式化字符串,{}里为替换内容
- print(f'{youxiulv}%')
1、ROUND 函数:将数字四舍五入到指定的位数
ROUND(number, num_digits)
ROUND 函数语法具有下列参数:
number 必需。 要四舍五入的数字。
num_digits 必需。 要进行四舍五入运算的位数。
如果 num_digits 大于 0(零),则将数字四舍五入到指定的小数位数。
如果 num_digits 等于 0,则将数字四舍五入到最接近的整数。
如果 num_digits 小于 0,则将数字四舍五入到小数点左边的相应位数。
若要始终进行向上舍入(远离 0),请使用 ROUNDUP 函数。
若要始终进行向下舍入(朝向 0),请使用 ROUNDDOWN 函数。
若要将某个数字四舍五入为指定的倍数(例如,四舍五入为最接近的 0.5 倍),请使用 MROUND 函数。
复制下表中的示例数据,然后将其粘贴进新的 Excel 工作表的 A1 单元格中。 要使公式显示结果,请选中它们,按 F2,然后按 Enter。 如果需要,可调整列宽以查看所有数据。
公式 | 说明 | 结果 |
=ROUND(2.15, 1) | 将 2.15 四舍五入到一个小数位 | 2.2 |
=ROUND(2.149, 1) | 将 2.149 四舍五入到一个小数位 | 2.1 |
=ROUND(-1.475, 2) | 将 -1.475 四舍五入到两个小数位 | -1.48 |
=ROUND(21.5, -1) | 将 21.5 四舍五入到小数点左侧一位 | 20 |
=ROUND(626.3,-3) | 将 626.3 四舍五入为最接近的 1000 的倍数 | 1000 |
=ROUND(1.98,-1) | 将 1.98 四舍五入为最接近的 10 的倍数 | 0 |
=ROUND(-50.55,-2) | 将 -50.55 四舍五入为最接近的 100 的倍数 | -100 |
2、格式化字符串f()用法
f-string在形式上是以 f
或 F
修饰符引领的字符串(f'xxx'
或 F'xxx'
),以大括号 {}
标明被替换的字段;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式。
f-string用大括号 {}
表示被替换字段,其中直接填入替换内容:
- >>> name = 'Eric'
- >>> f'Hello, my name is {name}'
- 'Hello, my name is Eric'
-
- >>> number = 7
- >>> f'My lucky number is {number}'
- 'My lucky number is 7'
-
- >>> price = 19.99
- >>> f'The price of this book is {price}'
- 'The price of this book is 19.99'
错误代码反思总结:
- import os
- import sys
-
- # 请在此输入您的代码
- n = int(input())
- jige = 0
- youxiu = 0
- for i in range(n):
- a = int(input())
- if a>=60:
- jige += 1
- jigelv = int(jige/n * 100)
- if a>=85:
- youxiu += 1
- youxiulv = int(youxiu/n * 100)
- print(str(jigelv) + '%')
- print(str(youxiulv) + '%')
INT()函数,是VFP数值函数的一种,是将一个要取整的实数(可以为数学表达式)向下取整为最接近的整数。利用INT函数可以返回一个小数的整数,如4.323,返回4,它不是四舍五入,而是舍尾法,即使4.987,也是返回4,而不是5 。
所以该种方法测试通过率仅30%。
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。
输入一行包含一个单词,单词只由小写英文字母组成。
对于所有的评测用例,输入的单词长度不超过 1000。
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
示例 1
输入
lanqiao
输出
- a
- 2
示例 2
输入
longlonglongistoolong
输出
- o
- 6
- import os
- import sys
-
- # 请在此输入您的代码
- word = input()
- a = 0
- b = []
- for i in word:
- c = word.count(i)
- if c >= a:
- a = c
- for j in word:
- if word.count(j) == a:
- b.append(j)
- b.sort()
- print(b[0])
- print(a)
甚至连字符串都是可迭代的对象,它们包含一系列的字符:
循环遍历单词 "banana" 中的字母:
for x in "banana": print(x)
for循环运用和示例:Python For 循环 (w3school.com.cn)
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝要为一条街的住户制作门牌号。
这条街一共有 20202020 位住户,门牌号从 11 到 20202020 编号。
小蓝制作门牌的方法是先制作 00 到 99 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、71、0、1、7,即需要 11 个字符 00,22 个字符 11,11 个字符 77。
请问要制作所有的 11 到 20202020 号门牌,总共需要多少个字符 22?
- import os
- import sys
-
- count = 0
- for i in range(1,2021):
- a = str(i)
- for j in a:
- if j == '2': #不能写成 j==2
- count += 1
- print(count)
【注意】这里最开始出现一个错误,if条件写成 j==2,但此处是字符类型,故要用单引号加以区别。
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝有很多数字卡片,每张卡片上都是数字 00 到 99。
小蓝准备用这些卡片来拼一些数,他想从 11 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。
小蓝想知道自己能从 11 拼到多少。
例如,当小蓝有 3030 张卡片,其中 00 到 99 各 33 张,则小蓝可以拼出 11 到 1010,
但是拼 1111 时卡片 11 已经只有一张了,不够拼出 1111。
现在小蓝手里有 00 到 99 的卡片各 20212021 张,共 2021020210 张,请问小蓝可以从 11 拼到多少?
提示:建议使用计算机编程解决问题。
- import os
- import sys
-
- #分析:1肯定是消耗最快的数字,所以只需要统计1出现的次数是否小于2021即可
- count=0 #计数
- i=1 #设置初值,循环累加遍历数列
- while True:
- count=str(i).count("1")+count #通过统计1的个数是不是达到了2021个就行,因为1肯定是消耗的最快的数字
- # print(count)
- if count==2021:
- print(i)
- break
- i=i+1
统计字符串中指定字符出现的次数
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
请计算这次考试的最高分、最低分和平均分。
输入的第一行包含一个整数 � (1≤�≤104)n (1≤n≤104),表示考试人数。
接下来 �n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
输出三行。
第一行包含一个整数,表示最高分。
第二行包含一个整数,表示最低分。
第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。
示例
输入
- 7
- 80
- 92
- 56
- 74
- 88
- 99
- 10
输出
- 99
- 10
- 71.29
- import os
- import sys
-
- n = int(input())
- list = []
- for i in range(n):
- num = int(input())
- list.append(num)
-
- a = max(list)
- b = min(list)
- c = sum(list)/n
-
- print(a)
- print(b)
- print("{:.2f}".format(c))
此处注意format格式化输出的方式,保留两位小数:print("{:.2f}".format(c))
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。
这不,大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。
小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。
现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。
取款机只能提供 100100 元面额的纸币。小明想尽可能少取些现金,够用就行了。 你的任务是计算出,小明最少需要取多少现金。
以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。
- **** 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折
需要说明的是,8888 折指的是按标价的 8888 计算,而 88 折是按 8080 计算,余者类推。 特别地,半价是按 5050 计算。
请输出小明要从取款机上提取的金额,单位是元。
- import math
- 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折
- '''
- data = data.split()
- sum = 0
- for i in range(0,len(data),3):
- price = float(data[i+1])
- discount = data[i+2]
- if len(discount) == 2:
- if discount == "半价":
- discount = 0.5
- else:
- discount = float(discount[:-1])*0.1
- else:
- discount = float(discount[:-1])*0.01
- sum += price*discount
- print(math.ceil(sum/100)*100)
用excel对数据处理一下,求和很快出结果,对office不太熟练,勿喷,说说我自己的做法:(小白一个 欢迎指正,互相学习。)
将数据复制进excel中,点数据中的分列,将文本分成3列
将折扣那一列文本中的“折”字替换掉,半折替换成5
再在旁边一列中输入前两个想要的格式如0.88 0.65,选中下一格 按ctrl+e 自动填充得到一列0.88 0.65 0.9等格式的数据。
最后就是基本的excel公式的运用指定格相乘 最后求和得到结果。
print(5200)
- import os
- import sys
- print(input())#我忘了是哪个大神讲的,正确答案最后会拿出来作比较,所以直接等于输入就行
这个真的6,测试通过100%
其余小妙招:
填空题直接输出结果,可以手算、在excel中算,print()结果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。