目录
代码思路仅供参考,欢迎大家批评指正!
1. 输出字母在字符串中位置索引
输入一个字符串,再输入两个字符,求这两个字符在字符串中的索引。
data = input()
a,b = input().split()
data = data[::-1]
for i in range(len(data)):
if data[i] == b:
print(len(data)-i-1,b)
elif data[i] == a:
print(len(data)-i-1,a)
2. 字符替换
本题要求编写程序,将输入字符串中的大写英文字母按以下对应规则替换,其他字符不变。(提示:转换表用元组实现)
data = list(input())
for i in range(len(data)):
if ord(data[i]) >= 65 and ord(data[i]) <= 90:
data[i] = chr(155-ord(data[i]))
data = ''.join(data)
print(data)
3. 逆序的三位数
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
num = input()
r_num = num[::-1]
print(r_num.lstrip('0'))
4. 判断两个字符串是否为变位词
如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词。比如,”heart”与”earth”互为变位 词,”Mary”与”arMy”也互为变位词。
a = list(input())
b = list(input())
index = 0
if len(a) == len(b):
if a == b:
index = 1
else:
for i in range(len(a)):
if a[0] in b:
b.remove(a[0])
a.remove(a[0])
else:
index = 1
break
if index == 1:
print('no')
else:
print('yes')
else:
print('no')
5. 计算有n个字符串中最长的字符串长度
编写程序,用于计算有n(1<n<10)个字符串中最长的字符串的长度。前导空格不要计算在内!
# Method 1
num = int(input())
length = 0
for i in range(num):
data = input().replace(' ','')
if len(data)>length:
length = len(data)
print(f'length={length}')
# Method 2
num = int(input())
lst = [input().strip() for i in range(num)]
max_len = max([len(i) for i in lst])
print(f'length={max_len}')
6. 位1的个数
输入一个非负整数,求它变成二进制后1的个数(提示:用bin函数)。
num = bin(int(input()))
print(str(num).count('1'))
7. 整数的二进制相加
输入两个整数,大小在[0,63]
之间。求它们的二进制和,二进制用8位表示。
a = int(input())
b = int(input())
print('{:08b}'.format(a))
print('{:08b}'.format(b))
print('-' * 8)
print('{:08b}'.format(a+b))
8. 汉明距离
两个整数间的汉明距离指的是这两个数对应二进制位不同的位置的数目。输入两个整数x,y, 0<=x, y<=231。输出x, y的汉明距离。
x,y = input().split()
x,y = '{:032b}'.format(int(x)),'{:032b}'.format(int(y))
sum = 0
for i in range(len(str(x))):
if x[i] != y[i]:
sum += 1
print(sum)
9. 查验身份证
一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:
首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z
;最后按照以下关系对应Z
值与校验码M
的值:
num = int(input())
weight = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
M = ['1','0','X','9','8','7','6','5','4','3','2']
sum1 = 0
for i in range(num):
id = input()
try:
int(id[:17])
except:
print(id)
continue
if id[-1] == M[sum(list(map(lambda e,f:e * f,list(map(int,id[:17])),weight))) % 11]:
sum1 += 1
else:
print(id)
if sum1 == num:
print('All passed')