HJ5 进制转换
题目:
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
while True:
try:
number = input()
n = len(number)
dic = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}
final = 0
#输入字符串从前往后遍历
for i in range(2,n):
final += dic[number[i]]*(16**(n-i-1))
print(final)
except:
break
更简洁的方法:
while True:
try:
print(int(input(),16))
except:
break
HJ10 字符个数统计
题目:
编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。
输入描述:
输入一行没有空格的字符串。
输出描述:
输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。
思路:运用集合的性质,即集合中没有重复元素。
while True:
try:
print(len(set(list(input()))))
except:
break
HJ11 数字颠倒/HJ12 字符串反转
题目:
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
输入描述:
输入一个int整数
输出描述:
将这个整数以字符串的形式逆序输出
while True:
try:
print(input()[::-1])
except:
break
HJ14 字符串排序
题目:
给定 n 个字符串,请对 n 个字符串按照字典序排列。
输入描述:
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:
数据输出n行,输出结果为按照字典序排列的字符串。
while True:
try:
n = int(input())
##决定一次输入多少
list = [input() for i in range(n)]
list.sort()
for j in list:
print(j)
except:
break
HJ20 密码验证合格程序
题目:
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种 (列出四种形式)
3.不能有长度大于2的不含公共元素的子串重复 (注:其他符号不含空格或换行)(将所有长度为3的子串列出来)
输入描述:
一组字符串。
输出描述:
如果符合要求输出:OK,否则输出NG
import re
def checkLegal(pswd):
if len(pswd) <= 8:
return False
else:
sub = []
for i in range(len(pswd)-2):
#生成长度为3的子串
sub.append(pswd[i:i+3])
#如果所有子串中有重复的,经过set处理后,长度一定会变小
if len(set(sub)) < len(sub):
return False
type_ = 0
##使用正则表达式
Upper = '[A-Z]'
Lowwer = '[a-z]'
num = '\d'#数字
chars = '[^A-Za-z0-9]'
patterns = [Upper,Lowwer,num,chars]
for pattern in patterns:
#在pswd中搜索pattern
pw = re.search(pattern,pswd)
if pw:
type_ += 1
if type_ >= 3:
return True
else:
return False
while True:
try:
pswd = input()
print('OK' if checkLegal(pswd) else 'NG')
except:
break
HJ21 简单密码
题目:
大家都知道手机上的字母: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,就这么简单,渊子把更简单的密码中出现的小写字母都变成对应的数字,数字和其它的符号都不做变换,
输入描述:
输入包括多个测试数据。输入是一个明文,密码长度不超过100个字符,输入直到文件结尾
输出描述:
真正的密文
声明:密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X ,先变成小写,再往后移一位,不就是 y 了嘛,简单吧。记住,Z 往后移是 a 哦。
##小写字母变成数字
##大写字母变成小写字母,再向后移动一位
##数字和其它符号不变换
while True:
try:
a = input()
length = len(a)
for i in range(length):
if a[i].isalpha():
if a[i].lower() == a[i]:
if a[i] == 'a' or 'b' or 'c':
a[i] = 2
elif a[i] == 'd' or 'e' or 'f':
a[i] = 3
elif a[i] == 'g' or 'h' or 'i':
a[i] = 4
elif a[i] == 'j' or 'k' or 'l':
a[i] = 5
elif a[i] == 'm' or 'n' or 'o':
a[i] = 6
elif a[i] == 'p' or 'q' or 'r' or 's':
a[i] = 7
elif a[i] == 't' or 'u' or 'v':
a[i] = 8
else:
a[i] = 9
else:
n = ord(a[i])-64
a[i] = chr(n).lower()
print(a)
except:
break
结果没有出现!!
while True:
try:
s = input()
res = []
for i in s:
if i.isdigit():
res.append(i)
elif i.isupper() and i != 'Z':
res.append(chr(ord(i.lower()) + 1))
elif i == 'Z':
res.append('a')
else:
if i in 'abc':
res.append('2')
elif i in 'def':
res.append('3')
elif i in 'ghi':
res.append('4')
elif i in 'jkl':
res.append('5')
elif i in 'mno':
res.append('6')
elif i in 'pqrs':
res.append('7')
elif i in 'tuv':
res.append('8')
else:
res.append('9')
print(''.join(res))
except:
break
HJ23 删除字符串中出现次数最少的字符
题目:
实现删除字符串中出现次数最少的字符,若出现次数最少的字符有多个,则把出现次数最少的字符都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
输入描述:
字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:
删除字符串中出现次数最少的字符后的字符串。
思路一:元素列表与计数列表的索引对应
while True:
try:
a = l