一、编程题
1、36.已知 IPv6 的地址字符串的格式为 X:X:X:X:X:X:X:X,其中每个 X 表示长度为 4 的字符串。例如:某 IPv6 字符串为“2A08:CCD6:0088:108A:0011:0002:202F:AA05”,IPv6 表示法需将每个 X 的前导零都省略,程序输出结果如下图所示:
现设计程序自动删除 IPv6 地址的前导零,请在划线处填入合适的代码。
s="2A08:CCD6:0088:108A:0011:0002:202F:AA05"
①
flag=False
for i in range(len(s)):
if s[i]==":":
②
flag=False
elif ③ :
ans+=s[i]
flag=True
print("原 IPv6 地址为:",s)
print("去前导零后:",ans)
参考答案:```pythons="2A08:CCD6:0088:108A:0011:0002:202F:AA05"ans=""flag=Falsefor i in range(len(s)):if s[i]==":":flag=Falseelif not flag:ans+=s[i]flag=Trueprint("原 IPv6 地址为:",s)print("去前导零后:",ans)```
2、37.编写程序,实现分段函数的计算,分段函数的取值如下表所示。要求:可连续输入5次(也就是输入5个x值,求出对应的y值),根据对应的表达式求出y值之后,将结果转化成整数添加到列表a中。请判断存在于列表a中的5个元素是否为素数,如果为非素数则转化成元组之后存在b1中,如果是素数则转换成元组之后存放在b2中,分别输出b1、b2中非素数和素数的元素及元素个数。
a=[]
a1=[]#暂时存储非素数的值
a2=[]#暂时存储素数的值
b1=()
b2=()
for i in range(5):
x=int(input("输入x="))
if x<0:
y=0
elif 0<=x<5:
y=x
elif 5<=x<10:
y=3*x-5
elif 10<=x<20:
y=0.5*x-2
elif x>=20:
y=2*x
①
for i in a:
if ② :
a1.append(i)
else:
flag=True
for j in range(2,i):
if i%j==0:
③
break
if ④ :
a2.append(i)
else:
a1.append(i)
b1=tuple(a1)
b2=tuple(a2)
print("非素数的个数有"+str(len(b1))+"个,","非素数为:",b1)
print("素数的个数有"+str(len(b2))+"个,","素数为:",b2)
参考答案:```pythona = []a1 = [] # 暂时存储非素数的值a2 = [] # 暂时存储素数的值b1 = ()b2 = ()for i in range(5):x = int(input("输入x="))if x < 0:y = 0elif 0 <= x < 5:y = xelif 5 <= x < 10:y = 3 * x - 5elif 10 <= x < 20:y = 0.5 * x - 2elif x >= 20:y = 2 * xa.append(int(y))for i in a:if i < 2:a1.append(i)else:flag = Truefor j in range(2, i):if i % j == 0:flag = Falsebreakif flag:a2.append(i)else:a1.append(i)b1 = tuple(a1)b2 = tuple(a2)print("非素数的个数有" + str(len(b1)) + "个,", "非素数为:", b1)print("素数的个数有" + str(len(b2)) + "个,", "素数为:", b2)```
3、38.给定一个完全由数字字符('0','1','2',...,'9')构成的字符串str,请写出str的p型编码串。例如:字符串1335554668可被描述为“1个1、2个3、3个5、1个4、2个6、1个8”,因此我们说1335554668的p型编码串为112335142618;00000000000可描述为“11个0”,因此它的p型编码串为110;类似的道理,编码串101可以用来描述1111111111;110003444225可描述为“2个1、3个0、1个3、3个4、2个2、1个5”,因此它的p型编码串为213013342215。如果输入非数字字符,则提示输入无效。根据上述算法思想,补全下列代码。s=input("请输入字符串str:")s+=' 'lens=len(s)for i in range(0, ① ,1): if '0'<=s[i]<='9': ② else: print('输入无效!') exit()sum=1i=0while i if ③ : sum+=1 else: print(sum,end='') print(s[i],end='') ④ i+=1
参考答案:① range(0, lens, 1)② count = s[i]③ s[i] >= '0' and s[i] <= '9'④ i < lens
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!