python基本数据类型作业
python基本数据类型作业
1.获取100以内的所有质数并把它们都放入列表中存储,所有合数再存储一个列表中
li1=[] ##合数
li2=[] ##质数
for item in range(2,101):
for item1 in range(2,item):
if item%item1==0:
li1.append(item)
break
else:
li2.append(item)
print("合数--",li1)
print("质数--",li2)
2.写一个程序:手机号验证,开头以133或者134或者135或者187号段的手机号码?假如输入非数字,提示“请输入数字”
flag=True
while flag:
tel=input('请输入您的电话号码(输入Q或q退出):').strip()
if tel.isdigit():
if tel.startswith('133') or tel.startswith('134') or tel.startswith('135')or tel.startswith('187'):
print('验证成功')
flag=False
else:
print('您输入的号码有误!')
elif tel.upper()=='Q':
print('正在退出')
break
else:
print('您输入的非正确号码!')
#用while...else
tel=input("请输入一个手机号:")
while len(tel) !=11 or tel.isdigit() !=True:
if tel.isdigit()==False:
tel=input("请输入数字")
else:
if len(tel) !=11:
tel=input("请输入正确的位数")
else:
if tel.startswith("133") or tel.startswith("134") or tel.startswith("135") or tel.startswith("187"):
print("验证成功")
else:
print("验证失败")
3.写一个程序:有一个列表list1=[1,2,3,4,5,6,7,8,9,11,12,13,14,15,14],将所有大于11的值保存至字典的第一个key1中,小于11的值保存至字典的第一个key2中。
dic={"key1":[],"key2":[]}
list1=[1,2,3,4,5,6,7,8,9,11,12,13,14,15,14]
for item in list1:
if item>11:
dic["key1"].append(item)
else:
dic["key2"].append(item)
print(dic)
#自动添加key1和key2
dic={}
list1=[1,2,3,4,5,6,7,8,9,11,12,13,14,15,14]
for item in list1:
if item>11:
if "key1" in dic:
dic["key1"].append(item)
else:
dic["key1"]=[item]
else:
if "key2" in dic:
dic["key2"].append(item)
else:
dic["key2"] = [item]
print(dic)
4.输出商品列表,用户输入序列号, 控制台显示用户选中的商品,商品列表如:shoplist=["电脑","手机","电视","菠萝"]
要求:1.控制台显示 序列号+商品的名称;2.用户输入序列号显示商品名称;3.用户输入错误的序列号,提示错误,重新输入;4.用户输入E,退出程序
shoplist=["电脑","手机","电视","菠萝"]
myshoplist=[]
for item in enumerate(shoplist,1):
print(item[0],':',item[1])
flag=True
while flag:
num=input('请输入商品序列号:').strip()
if num.isdigit():
num1=int(num)
if num1<=len(shoplist) and num1>0:
print('您选择了',shoplist[num1-1])
myshoplist.append(shoplist[num1-1])
print(myshoplist)
else:
print('输入超出范围')
elif num.upper()=='Q':
print('已退出')
break
else:
print('您输入有误!重新输入')
5.通过索引值找到ff变成大写list1=[11,22,"a",[44,55,["c","ff",[3,2,"ff",1],77,88],"ff","y"]]
#列表嵌套,通过索引值改
list1[3][2][2][2]="FF"
str1=str(list1)
#通过eval改
str1=str1.replace("ff","FF",str1.count("ff"))
print(str1,type(str1))
li=eval(str1)
print(li)
6.写一个程序,输入字符串:“abc222def333ghy444uio555fgfg666”,求:
#1.字符串中数字的个数
str=input("输入字符串")
li=[]
for i in str:
if i.isdigit()==True:
li.append(i)
print(li,len(li))
#2.有几种数字
str=input("输入字符串")
li=[]
for i in str:
if i.isdigit()==True:
li.append(i)
li1=list(set(li))
print(li1,len(li1))
#3.有几段数字
str=input("输入字符串")
li=[]
for i in str:
if i.isalpha():
str=str.replace(i," ")
print(str)
#split():不传参数,默认以字符串中所有的空格分割
li=str.split()
print(li)
#复杂一点的方法
str1=input('输入字符串:').strip()
li=[]
str2=''
last=len(str1)
end=str1[-1]
for i in range(len(str1)):
# print(str1[i])
if str1[i].isdigit():
str2 = str2 + str1[i]
if i==last-1 and end.isdigit():
li.append(str2)
else:
li.append(str2)
str2=''
print(li)
li2=list(set(li))
for i in li2:
if i=='':
li2.remove(i)#如果直接循环li进行删除,不能完全删除掉,因为列表中,删除前面的元素,后面元素的索引值改变了,导致不能完成循环,不过可以加一个while li.count('')==0来控制下面的for循环进行移除'';
print(li2)
print(len(li2))
6.用input()方法:写一个程序,如用户输入1+2或者1+ 2或者 1 + 2,输出相加的和?
str1=input('请输入加式:').strip()
li=str1.split('+')
sum=0
print(li)
for i in li:
i.strip()
num=int(i)
sum=sum+num
print('它们的和是:',sum)

浙公网安备 33010602011771号