python学习之练习0726
1) 写一个方法要求该方法从控制台输入10个数字,且只能是输入的数字类型,其它类型的输入提示非法字符,并把这10个数字分10行写入到一个文件,
2) 写一个方法要求从上述文件内把这10个数字读出来并且存储到一个集合或者元祖等存储结构体
3) 针对以上存储的10个数字排序,并打印
4) 排序要求两种算法实现,冒泡和二叉树排序(可以只写一种)
以下为三种逻辑实现方式:
class sortarr:
def __init__(self):
print('success')
def initnum(self):
print("请输入10个数字,并且以逗号间隔:")
str=input()
strarr=str.split(",") #分割字符串
for str in strarr: #利用for循环遍历判断输入的是否为数字
if str.isdigit()==True and len(strarr)==10:
continue
elif str.isdigit()==True and len(strarr)!=10:
sortarr.initnum(self)
else:
print('您输入的有非法字符,请重新输入:')
sortarr.initnum(self)
self.sortnum(strarr) #调用sortnum方法排序
#把输入的数字写到文件中
myFile = open("sortFile11.txt", "w+")
for st in strarr:
myFile.write(st)
myFile.write("\n")
# print(myFile.read(10))myFile.close()
myFile.close()
#读出文件内容并存储到集合中
fo=open("sortFile11.txt", "r+")
s=fo.read(10)
se=set(s)
print(se.remove('\n')) #多个\n
fo.close()
def sortnum(self,strarr):
for i in range(len(strarr)-1):
for j in range (len(strarr)-1-i):
if strarr[j]>strarr[j+1]:
strarr[j],strarr[j+1]=strarr[j+1],strarr[j]
print(strarr)
hehe=sortarr()
hehe.initnum()
class sortnum:
def __init__(self,flag):
self.flag=flag #进入循环标识
print("success")
def sortArr(self):
while self.flag == 1 :
print("请输入10个数字,并且以空格间隔:")
str=input()
strArr=str.split(" ")
for str in strArr:
if (str.isdigit())and len(strArr)==10:
self.flag = 0
continue
elif (str.isdigit()) and len(strArr)!=10:
print('字符长度不符')
self.flag = 1
break
else:
print("非法字符,请重新输入:")
self.flag = 1
break
print("========", strArr)
if self.flag==0:
self.sortnum1(strArr)
def sortnum1(self,strArr):
for i in range(len(strArr)-1):
for j in range (len(strArr)-1-i):
if strArr[j]>strArr[j+1]:
strArr[j],strArr[j+1]=strArr[j+1],strArr[j]
print(strArr)
hehe=sortnum(1)
hehe.sortArr()
class sortnum:
def __init__(self):
#进入循环标识
print("创建对象成功!!")
#排序方法
def sortArr(self,length):
while True:
print("请输入",length,"个数字,并且以空格间隔:")
str=input();
strArr=str.split(" ")
if self.chekcnum(strArr) and self.checkLen(strArr,length):
self.sortnum1(strArr)
break
#校验输入的内容是否是数字格式的字符串
def chekcnum(self,strArr):
flag=1
for str in strArr:
if str.isdigit()==1:
flag = 0
continue
else:
flag=1
if flag==1:
return False
else:
return True
# 校验输入的内容长度是否合法
def checkLen(self,strArr,length):
flag = 1
for str in strArr:
if len(strArr) == length:
flag = 0
continue
else:
flag = 1
if flag == 1:
return False
else:
return True
def sortnum1(self,strArr):
for i in range(len(strArr)-1):
for j in range (len(strArr)-1-i):
if strArr[j]>strArr[j+1]:
strArr[j],strArr[j+1]=strArr[j+1],strArr[j]
print(strArr)
hehe=sortnum()
hehe.sortArr(5)
#hehe.sortnum1(['1', '3', '2', '6', '5'])
第三种方法最灵活,可输入任意位数进行排序
行走世间,全是妖怪

浙公网安备 33010602011771号