1、HJ3 明明的随机数set()+sort()
题目描述:
思路解析:
根据题目可知,需要实现去重+排序。去重可以利用 set() 内置函数,sort() 函数实现排序。
set() 内置函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
set() 的使用方法示例:
>>> x = set('eleven')
>>> y = set('twelve')
>>> x,y
({'l', 'e', 'n', 'v'}, {'e', 'v', 'l', 't', 'w'}) # 重复的被删除
>>> x & y #交集
{'l', 'e', 'v'}
>>> x | y #并集
{'e', 'v', 'n', 'l', 't', 'w'}
>>> x - y #差集
{'n'}
>>> y -x #差集
{'t', 'w'}
>>> x ^ y #补集
{'t', 'n', 'w'}
>>> y ^ x #补集
{'w', 'n', 't'}
sort() 函数用于对原列表进行排序,如果指定参数,则使用指定的比较函数。
# 列表
vowels = ['e', 'a', 'u', 'o', 'i']
# 降序
vowels.sort(reverse=True)
# 输出结果
print ( '降序输出:', vowels )
# 获取列表的第二个元素
def takeSecond(elem):
return elem[1]
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
# 指定第二个元素排序
random.sort(key=takeSecond)
# 输出类别
print ('排序列表:', random)
代码实现:
while True:
try:
a = input() # 输入数
b = int(a)
c = [] # 定义一个空列表存放循环后的无序列表
for i in range(b): # 循环
c.append(int(input())) # 空集合中追加一个N个数中的某一个随机数
uniq = set(c) # 列表去重,变成无序
c = list(uniq)
c.sort()
for x in c:
print(x)
except:
break
# a = input()
# b = int(a)
# c = []
# for i in range(b):
# c.append(int(input()))
# uniq = set(c) # 列表去重,变成无序
# c = list(uniq)
# c.sort()
# for x in c:
# print(x)
# while True:
# try:
# n = input() # 指定为N个数,输入
# lst = [] # 指定一个空列表
# for i in range(int(n)): # 循环N次
# lst.append(int(input())) # 空集合中追加一个N个数中的某一个随机数
# uniq=set(lst) # 列表去重,但是会变成无序
# lst=list(uniq) # 集合转列表
# lst.sort() # 列表排序
# for i in lst:
# print(i) # 打印列表
# except:
# break
# 暴力求解
# a = ['1','2']
# for i in a:
# print(i)
# print(' ') # 换行输出
2、 HJ10 字符个数统计set()
题目描述:
编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次。
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。
数据范围: 1 \le n \le 500 \1≤n≤500
输入描述:
输入一行没有空格的字符串。
输出描述:
输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。
示例1
输入:abc 输出:3
示例2
输入:aaa 输出:1
思路解析:
由题意可知,统计不同字符的数目,只需利用 set() 内置函数去重即可。
代码实现:
a = input()
b = set(a) # 去重
print(len(b))
3、 HJ84 统计大写字母个数isupper()
题目描述:
描述
找出给定字符串中大写字符(即'A'-'Z')的个数。
数据范围:字符串长度:1\le |s|\le 250\1≤∣s∣≤250
字符串中可能包含空格或其他字符。
进阶:时间复杂度:O(n)\O(n) ,空间复杂度:O(n)\O(n)
输入描述:
对于每组样例,输入一行,代表待统计的字符串。
输出描述:
输出一个整数,代表字符串中大写字母的个数。
示例1
输入:A 1 0 1 1150175017(&^%&$vabovbaoadd 123#$%#%#O
输出:2
思路解析:
isupper() 方法检测字符串中所有的字母是否都为大写。
语法:str.isupper()
代码实现:
a = input()
print([x.isupper() for x in list(a)].count(True))
a = input()
print([x.isupper() for x in a].count(True))
3、HJ55 挑7range()count()
题目描述:
描述
输出 1到n之间 的与 7 有关数字的个数。
一个数与7有关是指这个数是 7 的倍数,或者是包含 7 的数字(如 17 ,27 ,37 ... 70 ,71 ,72 ,73...)
数据范围: 1 \le n \le 30000 \1≤n≤30000
输入描述:
一个正整数 n 。( n 不大于 30000 )
输出描述:
一个整数,表示1到n之间的与7有关的数字个数。
示例1
输入:20 输出:3
说明:输入20,1到20之间有关的数字包括7,14,17 共3个。
思路解析:
利用 range() 方法进行迭代,count() 方法可以指定搜索字符串。
代码实现:
a = input()
count = 0
for x in range(1, int(a)+1): # 必须设置 start 和 stop,否则结果有误
if x % 7 == 0:
count += 1
elif str(x).count('7')>0:
count += 1
print(count)
# 以下的解法的输出比正确输出多1,因为range()默认从0开始计数
# a = input()
# count = 0
# for x in range(int(a)-1):
# if x % 7 == 0:
# count += 1
# elif str(x).count('7')>0:
# count += 1
# print(count)