HJ3 明明的随机数set()+sort()——HJ10 字符个数统计set()——HJ84 统计大写字母个数isupper()——HJ55 挑7range()count() Python

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值