这次作业就是处理字符,关键在于字符串的一些函数要掌握熟练。
这个题是容易的,只需要做到8 8 8位取出来就行,具体处理题目描述里已经给出了。
def parseQR(x) :
l = len(x)
ret = ''
for i in range(l // 8) :
mdl = x[i * 8 : (i + 1) * 8]
val = int(mdl, 2)
ret = ret + chr(val)
return ret
code = input()
info = parseQR(code)
print('%s\n-> %s' % (code, info))
这个题也一样,题目让干啥就干啥,函数运用灵活一点即可。
异或操作可以转换成整数后直接用^即可。
def enChar(x) :
val = ord(x)
mdl = bin(val)
mdl = mdl.replace('0b', '')
mdl = '0' * (8 - len(mdl)) + mdl
mdl = mdl[7] + mdl[: 7]
key, ret = '10100101', ''
for i in range(8) :
ret = ret + str(eval(mdl[i]) ^ eval(key[i]))
return ret
def deChar(y):
x,key = '','10100101'
for i in range(len(y)):
if y[i]==key[i]:
x=x+'0'
else:
x=x+'1'
x = x[1:len(x)]+x[0]
x = int(x,2)
x = chr(x)
return x
def enText(txt):
enTxt = ''
for x in txt:
enTxt = enTxt+enChar(x)+' '
return enTxt
def deText(txt):
txt=txt.replace(' ','')
deTxt = ''
for i in range(len(txt)//8):
y = txt[8*i:8*(i+1)]
deTxt = deTxt+deChar(y)
return deTxt
txt = input()
enTxt = enText(txt)
deTxt = deText(enTxt)
print('明文:', txt)
print('加密:', enTxt)
print('解密:', deTxt)
本题的话,把权重和答案放进一个列表和字符串里是很明智的,写起来会很好看而且短。
ans = '10X98765432'
v = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
def checksum(x) :
l, Sum = len(x), 0
for i in range(l) :
Sum += int(x[i]) * v[i]
return ans[Sum % 11]
ID = input()
cs = checksum(ID)
print('%s -> %s' % (ID, cs))
或许需要一些小技巧,我们用一个t m p tmp t m p记录一下字符出现了多少次,然后如果当前字符和上一个不一样,我们就把次数和上一个字符加进答案,次数重置为1 1 1;如果一样就次数+ 1 +1 +1。
注意要单独输出最后一个。
def RLE(x) :
ret = ''
l, tmp = len(x), 1
for i in range(1, l) :
if x[i] == x[i - 1] :
tmp += 1
else :
ret = ret + str(tmp) + x[i - 1]
tmp = 1
ret = ret + str(tmp) + x[l - 1]
return ret
x = input()
y = RLE(x)
print('原始数据:', x)
print('行程编码:', y)
本题和T 3 T3 T 3类似,把质量和代表元素的字符塞进字符串和列表是明智的,我们用i n d e x index i n d e x函数完成对字符串的索引就可以减少大量特判。
Idx = 'OCNSH'
v = [16, 12, 14, 32, 1]
def molecularWeight(x) :
t, l, Sum = 0, len(x), 0
while t < l :
w = v[Idx.index(x[t])]
t += 1
mdl = 0
while t < l and x[t].isdigit() :
mdl = mdl * 10 + int(x[t])
t = t + 1
if not mdl :
mdl = 1
Sum += mdl * w
return Sum
formula = input()
weight = molecularWeight(formula)
print('%s的分子量是:%d'%(formula, weight))
def Gcd(x, y) :
if x % y == 0 :
return y
return Gcd(y, x % y)
def add(x, y) :
mx, my = x.split('/'), y.split('/')
if len(mx) < 2 :
mx.append('1')
if len(my) < 2 :
my.append('1')
vx, vy = [], []
vx.append(int(mx[0])); vx.append(int(mx[1]))
vy.append(int(my[0])); vy.append(int(my[1]))
Up, Down = vx[0] * vy[1] + vy[0] * vx[1], vx[1] * vy[1]
d = Gcd(Up, Down)
Up = Up // d; Down = Down // d
if Down == 1 :
return str(Up)
else :
return str(Up) + '/' + str(Down)
x = input()
y = input()
z = add(x, y)
print('%s + %s = %s' % (x, y, z))
Original: https://blog.csdn.net/JZYshuraK/article/details/125015540
Author: JZYshuraK
Title: 【Educoder作业】问题求解——字符信息
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/671352/
转载文章受原作者版权保护。转载请注明原作者出处!