编写一个程序,将输入字符串中的字符按如下规则排序。
规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
如,输入: Type 输出: epTy
规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
如,输入: BabA 输出: aABb
规则 3 :非英文字母的其它字符保持原来的位置。
如,输入: By?e 输出: Be?y
注意有多组测试数据,即输入有多行,每一行单独处理(换行符隔开的表示不同行)
import sys
while True:
try:
string = str(input())
target_range = set( range(ord("a"), ord("z")+1) )
target_range = target_range.union( set(range(ord("A"), ord("Z")+1) ) )
ls = []
[ls.append(s) if ord(s) in target_range else "" for s in string ]
ls_new = []
for ind in range(ord("a"), ord("z")+1):
for s in ls:
if ord(s) == ind or ord(s) == ind + ord("A")-ord("a"):
ls_new.append(s)
# ls.remove(s)
continue
ls_output = []
for s in string:
if ord(string[len(ls_output)]) not in target_range:
ls_output.append(string[len(ls_output)])
continue
elif ord(string[len(ls_output)]) in target_range:
ls_output.append(ls_new[0])
ls_new.pop(0)
string_o = "".join(ls_output)
print(string_o)
pass
except:
break
1、对输入的字符串进行加解密,并输出。
2加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
其他字符不做变化。
3、解密方法为加密的逆过程。
接口描述:
实现接口,每个接口实现1个基本操作:
void Encrypt (char aucPassword[], char aucResult[]):在该函数中实现字符串加密并输出
说明:
1、字符串以\0结尾。
2、字符串最长100个字符。
int unEncrypt (char result[], char password[]):在该函数中实现字符串解密并输出
说明:
1、字符串以\0结尾。
2、字符串最长100个字符。
def _encode(s):
if ord("a") <= ord(s) < ord("z"):
return chr( ord(s) + 1 + ord("A") - ord("a") )
elif ord(s) == ord("z"):
return "A"
elif ord(s) == ord("Z"):
return "a"
elif ord("A") <= ord(s) < ord("Z"):
return chr( ord(s) + 1 + ord("a") - ord("A") )
elif ord("0") <= ord(s) < ord("9"):
return chr( ord(s) + 1 )
elif ord(s) == ord("9"):
return "0"
else:
return s
def encode(string):
string = "".join([_encode(s) for s in string])
return string
def _decode(s):
if ord("a") < ord(s) <= ord("z"):#ok
return chr( ord(s) - 1 + ord("A") - ord("a") )
elif ord(s) == ord("A"):#ok
return "z"
elif ord(s) == ord("a"):#ok
return "Z"
elif ord("A") < ord(s) <= ord("Z"):#ok
return chr( ord(s) - 1 + ord("a") - ord("A") )
elif ord("0") < ord(s) <= ord("9"):#ok
return chr( ord(s) - 1 )
elif ord(s) == ord("0"):#ok
return "9"
else:
return s
def decode(string):
string = "".join([_decode(s) for s in string])
return string
while True:
try:
str1 = str(input())
str2 = str(input())
print(encode(str1))
print(decode(str2))
pass
except:
break
题目描述
信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、 QQ 用户、手机号码、银行帐号等信息及活动记录。
采集输入大数据和分类规则,通过大数据分类处理程序,将大数据分类输出。
代码:
while True:
try:
str1 = str(input())
str2 = str(input())
#str1 = "15 123 456 786 453 46 7 5 3 665 453456 745 456 786 453 123"
#str2 = "5 6 3 6 3 0"
#str_target = "30 3 6 0 123 3 453 7 3 9 453456 13 453 14 123 6 7 1 456 2 786 4 46 8 665 9 453456 11 456 12 786"
ls1 = str1.split(" ")
n1, ls1 = ls1[0], ls1[1: ]
ls1 = ls1[:int(n1)]
ls2 = str2.split(" ")
n2, ls2 = ls2[0], ls2[1:]
ls2 = ls2[:int(n2)]
ls2 = list(set(ls2))
ls2 = [int(item) for item in ls2]
ls2.sort()
ls2 = [str(item) for item in ls2]
dic_result = dict()
for key in ls2:
_sub_result = []
[_sub_result.append( (str(ind),item) ) if key in item else None for ind,item in enumerate(ls1)]
dic_result[key] = _sub_result
ls_output = []
for key in dic_result.keys():
if len(dic_result[key])>0:
ls_output.append(key)
ls_output.append( str(len(dic_result[key])) )
ls_output.extend([_item for _tup in dic_result[key] for _item in _tup ])
print(str(len(ls_output)) + " " + " ".join(ls_output))
#print(str_target)
pass
except:
break
题目说明
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
样例输入
5
样例输出
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
接口说明
原型
void GetResult(int Num, char * pResult);
输入参数:
int Num:输入的正整数N
输出参数:
int * pResult:指向存放蛇形矩阵的字符串指针
指针指向的内存区域保证有效
返回值:
void
while True:
try:
num = int(input())
#num = 4
ls = [[0]*num for i in range(num)]
_x,_y = 0,0
value = 1
for i in range(num):
_x,_y = i,0
while _x >= 0:
ls[_x][_y] = value
value += 1
_x -= 1
_y += 1
ls = [ " ".join([str(val) if val >0 else "" for val in _ls ]) for _ls in ls ]
ls = [item.strip(" ") for item in ls]
[print(item) for item in ls]
pass
except:
break
题目描述
有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
代码:
while True:
try:
num = int(input())
n = 0
if num == 0:
break
else:
while num >=2 :
num -= 3 # 消耗三瓶饮料
num += 1 # 得到一瓶饮料
n += 1
print(n)
pass
except:
break
题目描述
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
注意每个输入文件有多组输入,即多个字符串用回车隔开
代码:
while True:
try:
#string = "abcdd"
string = str(input())
dic = dict([(key,0) for key in set(string)])
for key in string:
dic[key] += 1
count_min = min(dic.values())
ls_min = []
[ls_min.append(key) if dic[key]!=count_min else None for key in string]
print("".join(ls_min))
pass
except:
break
题目描述
密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。
假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。
他是这么变换的,大家都知道手机上的字母: 1–1, abc–2, def–3, ghi–4, jkl–5, mno–6, pqrs–7, tuv–8 wxyz–9, 0–0,就这么简单,渊子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,
声明:密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X,先变成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。
代码:
def _transfer(s):
if ord("A") <= ord(s) < ord("Z"):
return chr(1 + ord(s) + ord("a") - ord("A"))
elif s=="Z":
return "a"
elif ord("a") <= ord(s) <= ord("z"):
dic = {
"1":1,
"a":2, "b":2, "c":2,
"d":3, "e":3, "f":3,
"g":4, "h":4, "i":4,
"j":5, "k":5, "l":5,
"m":6, "n":6, "o":6,
"p":7, "q":7, "r":7, "s":7,
"t":8, "u":8, "v":8,
"w":9, "x":9, "y":9, "z":9,
"0":0,
}
return str(dic[s])
elif ord("0") <= ord(s) <= ord("9"):
return s
else:
return s
while True:
try:
#code_in = "YUANzhi1987"
#code_out = "zvbo9441987"
code_in = str(input())
code_o = "".join([_transfer(s) for s in code_in])
print(code_o)
pass
except:
break
题目描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度大于2的子串重复
代码:
def _check_type(code):
dic = {
"a":0, "A":0, "1":0, "other":0}
for s in code:
if ord("a") <= ord(s) <= ord("z"):
dic["a"] += 1
elif ord("A") <= ord(s) <= ord("Z"):
dic["A"] += 1
elif ord("0") <= ord(s) <= ord("9"):
dic["1"] += 1
else:
dic["other"] += 1
count_type = 0 # 统计类别数量为0的 类别的数量
for k,v in dic.items():
if v == 0:
count_type += 1
if count_type <= 1:
return "effect"
else:
return "not_effect"
def __slice(string, window):
"""
滑动窗口切片
计算给定窗口大小window下,string中所有可能的序列
"""
result_list = []
for i in range(0, len(string)-window+1):
result_list.append(string[i:i+window])
return result_list
def _check_repeat_slice(string):
result_list = []
for w in range(3, len(string)-1):
result_list += __slice(string, w)
dic_stat = dict()
for item in result_list:
if item in dic_stat.keys():
dic_stat[item] += 1
else:
dic_stat[item] = 1
#print(result_list)
#print(dic_stat)
if max(dic_stat.values())>=2:
return "not_effect"
else:
return "effect"
def check_effect(code):
if len(code) <= 8:
return "NG"
if _check_type(code) == "not_effect":
return "NG"
if _check_repeat_slice(code) == "not_effect":
return "NG"
return "OK"
while True:
try:
code = str(input())
print(check_effect(code))
pass
except:
break
#%%