华为机试题:HJ9 提取不重复的整数(python)

描述:输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。保证输入的整数最后一位不是 0 。

数据范围: 1 ≤ n ≤ 108

输入描述:输入一个int型整数

输出描述:按照从右向左的阅读顺序,返回一个不含重复数字的新的整数

示例1

输入:9876673
输出:37689

Python3

a = input()[::-1]		# 倒叙输出
print("".join(sorted(set(a), key=a.index)))		# 按照字符串 a 进行排序
     
  • input():获取控制台(任意形式)的输入。输出均为字符串类型。
  • set() :创建集合。其表示一个无序不重复元素的序列。
  • sorted() :对所有可迭代类型进行排序。不改变原始序列,返回排序后的新序列。
  • str.join():将序列(即字符串、元组、列表、字典)中的元素以指定的字符连接,并返回一个新的字符串。
  • print() :打印输出。

知识点详解

1、set() :创建集合。表示一个无序不重复元素的序列。

【Python】集合set的使用详解

无序:无论序列中的元素在赋值给变量之前是什么顺序,赋值后各元素位置都将会随机显示。
不重复:对序列中的重复元素,赋值给变量后系统会自动去除重复元素,只保留一个。

  • 备注:【列表、元组和字符串】都属于序列。
  • 备注:set(str) 对字符串去重;set(tuple)对元组去重、set(list)对列表去重。

集合的创建方法:

  • (1)创建空集:set()
  • (2)创建集合:set((A,B))
  • (3)创建集合:{}
# (1)创建空集:set()
person1 = set()         # 空集合
print(len(person1))     # 【输出结果】0
print(person1)          # 【输出结果】set()

# (2)创建集合:set((A,B))
person2 = set(("student", "teacher", "babe", 123, 321, 123))
print(len(person2))     # 【输出结果】5
print(person2)          # 【输出结果】{321, 'teacher', 'babe', 123, 'student'}

# (3)创建集合:{}
person = {"student", "teacher", "babe", 123, 321, 123}
print(len(person))      # 【输出结果】5
print(person)           # 【输出结果】{'student', 321, 'teacher', 123, 'babe'}

2、sorted() :对所有可迭代类型进行排序。不改变原始序列,返回排序后的新序列。

函数说明:sorted(iterable, key=None, reverse=False)
输入参数:

  • iterable:可迭代的对象(如:字典、列表)。
  • key:可迭代类型中某个属性,对指定函数进行排序。默认=None
  • reverse:升序reverse=False(默认)降序reverse=Ture

备注:字符串按照ASCII的大小进行排序。默认先排序大写字母,后排序小写字母。

lst1 = (5, 4, 3, -2, 1)
L1 = sorted(lst1)                       # 【输出结果】[-2, 1, 3, 4, 5]
L2 = sorted(lst1, key=abs)              # 【输出结果】[1, -2, 3, 4, 5]
L3 = sorted(lst1, reverse=True)         # 【输出结果】[5, 4, 3, 1, -2]
print(L1)
print(L2)
print(L3)
###################################################################################
lst2 = ('F', 'D', 'Y', 'e', 'a', 'v')
L4 = sorted(lst2)                       # 【输出结果】['D', 'F', 'Y', 'a', 'e', 'v']
L5 = sorted(lst2, key=str.lower)        # 【输出结果】['a', 'D', 'e', 'F', 'v', 'Y']
print(L4)
print(L5)

3、str.join():将序列(即字符串、元组、列表、字典)中的元素以指定的字符连接,并返回一个新的字符串。

函数说明:'Separator'.join(Sequence)
功能说明:以Separator为分隔符,对Sequence所有元素进行逐个分割,并返回一个新的字符串。
输入参数:

  • Separator:代表分隔符。 可以是单个字符(如:','、'.'、'-'、'*'等),也可以是字符串(如: 'abc')。
  • Sequence:代表要连接的元素序列。可以是字符串、元组、列表、字典。
    备注1:SeparatorSequence都只能是string型,不能是int型和float型,否则系统报错。
    备注2:字典的读取是随机的。
a1 = 'I Love China !'
print('字符串: ', ' '.join(a1))

a2 = ['I', 'Love', 'China', '!']
print('列表: ', ' '.join(a2))

a3 = ('I', 'Love', 'China', '!')
print('元祖: ', ' '.join(a3))

a4 = {'I': 1, 'Love': 2, 'China': 3, '!': 4}
print('字典: ', ' '.join(a4))
'''
字符串:  I   L o v e   C h i n a   !
列表:  I Love China !
元祖:  I Love China !
字典:  I Love China !
'''

import os     	# 导入路径模块
os.getcwd()   	# 获取当前路径
data_save = os.path.join(os.getcwd(), 'data_save')  # 获取当前路径并组合新的路径
print(data_save)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖墩会武术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值