最近想试试手,网上搜素题目,找了3个题目进行编程:
1、把一个IP地址转成二进制格式表示
# -*- coding:utf-8 -*-
def ipAddr_format(ipaddr):
#ip地址以‘.’进行分割,字符串列表
strlist1=ipaddr.split('.')
#转为整数,整数列表
intlist1=list(map(int,strlist1))
#转为二进制表达式,str列表
binlist1=list(map(bin,intlist1))
'''#打印二进制表达式元素
for element in binlist1:
print(element.split('b')[1])
'''
#将二进制表示以‘b’分割取第二个元素
newstr=[]
for ele in binlist1:
newstr.append(ele.split('b')[1])
#右对齐以0填充,宽8位
newstr1=[ele.rjust(8,'0') for ele in newstr]
#新字符串表示
temp = '-'.join(newstr1)
print(temp)
return temp
ipAddr_format('10.3.9.12')
2、求解Ax**2 + Bx +C = 0,此题转载网上代码
# -*- coding:utf-8 -*-
'''
求解方程A(x**2)+Bx+C=0,输入A,B,C
'''
def args_input(): #本段使用异常方式处理的比我好,舍弃了我自己写的部分
try:
A = float(input('请输入A的值:'))
B = float(input('请输入B的值:'))
C = float(input('请输入C的值:'))
return A, B, C
except:
print('请输入正确的数据类型')
return args_input() #此处好,异常后可以继续重新输入
def get_delta(A, B, C):
return B ** 2 - 4 * A * C
def solve():
A, B, C = args_input()
if A==0:
assert B!=0,'无效方程式'
print('x=',-C/B)
else:
delta = get_delta(A, B, C)
if delta < 0:
print('该方程无解')
elif delta == 0:
x = B / (-2 * A)
print('x=', x)
else:
# 计算x1 x2的值
x1 = (B + pow(delta, 0.5)) / (-2 * A)
x2 = (B - pow(delta, 0.5)) / (-2 * A)
print('x1=', x1)
print('x2=', x2)
def main():
solve()
if __name__ == '__main__':
main()
第3题, 将输入的字符串倒序,并输出长度
# -*- coding:utf-8 -*-
#常规列表处理方法
def strReverse():
sstr=input('请输入原始字符串:')
lenstr=len(sstr) #字符串长度
listr=list(sstr) #转为列表处理
newlistr=list(reversed(listr)) #颠倒元素后列表
dstr=''.join(newlistr) #拼接列表中的字符串
print(f'字符串长度:{lenstr},反向字符串{dstr}')
return(dstr)
#切片处理方法
def strReverse1():
sstr=input('请输入原始字符串:')
print(f'字符串长度:{len(sstr)},方向字符串:{sstr[::-1]}')
return sstr[::-1]
def main():
# strReverse()
strReverse1()
if __name__=='__main__':
main()