关于Python中if、for、with、list、dict的练习题

1.用户输入一个数字,判断一个数字是否为一个水仙花数,水仙花数是一个三位数,三位数的每一位三次方的和还等于这个数,那么这个数就是一个水仙花数

#eg:1^3+5^3+3^3=153
number=input("please input number:")
if number.isdecimal():
    if len(number)==3:
        x1=int(number[0])
        x2=int(number[1])
        x3=int(number[2])
        if x1**3+x2**3+x3**3==int(number):
            print("其为水仙花数")
        else:
            print("不是水仙花数")
    else:
        print("数字不正确")
else:
    print("请输入三位数合法数字")

2.将list=[“周大苏打”,“周对手的防守”,“马虎他”,“周星星”]中首字母是周字的删除

list=["周大苏打","周对手的防守","马虎他","周星星"]
#这里有坑,因为在列表的删除过程中,删除一个元素其他会前移,会出现问题,所以采用倒叙删除
for i in range(len(list)-1,-1,-1):
    if list[i][0]=="周":
        list.pop(i)
print(list)

3.车牌分块区分,现给出车牌,根据车牌的信息,分析的各省车牌持有量

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:725638078
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
cars=["鲁A2444","鲁B1233","京B8989M","黑C49678","黑C46555","沪B25041"]
locals={"沪":"上海","黑":"黑龙江","鲁":"山东","鄂":"湖北","湘":"湖南","京":"北京"}
#车牌分块区分,现给出车牌,根据车牌的信息,分析的各省车牌持有量
countlist={}
for i in cars:
    if locals[i[0]] not in countlist:
        countlist[locals[i[0]]]=1
    else:
        countlist[locals[i[0]]]=countlist[locals[i[0]]]+1
print(countlist)
----------------------------------------------------------
#升级版
countlist={}
for i in car:
    countlist[locals[i[0]]]=countlist.get(locals[i[0]],0)+1
print(countlist)

4.通过文件形式将txt格式的商品价格,商品数量,商品名字以列表嵌套字符串的形式表现

dic={}
list1=[]
with open ("a.txt",encoding="utf-8",mode="r") as f1:
    for line in f1:
        line=line.strip("\n").split(" ")
        dic["name"]=line[0]
        dic["price"] = line[1]
        dic["count"] = line[2]
        list1.append(dic)
print(list1)

5.需求:

  • 页面显示序号+商品名称+商品价格
  • 用户如果输入选择的商品序号,然后打印商品名称及商品价格
  • 如果用户输入的商品序号有误,则提示输入有误,并重新输入
  • 用户输入Q,或者q,退出程序
server = [
  {"name": "服务器1", "price": 10000},
  {"name": "服务器2", "price": 10500},
  {"name": "服务器3", "price": 10700},
  {"name": "服务器4", "price": 10800},
]
while True:

  for index,dic in enumerate(server):
      print(index,dic["name"],dic["price"])
  number=input("请输入商品序号:").strip()
  if number.isdecimal():
      number=int(number)
      if 0<number<len(server):
          print(server[number-1]["name"],server[number-1]["price"])
      else:
          print("你输入的超出了范围")
  elif number.upper()=="Q": break
  else:
      print("你输入的为非法字典")

6.dict={“name”:“zhu”,“time”:“fdsf”,.}

判断dict中“name"值是否在字典中

dict={"name":"zhu","time":"fdsf"}
print("name" in dict.keys())

7.循环提示用户,并将输入内容追加到列表中(如果输入N或n则停止循环)

list=[]
while 1:
    username=input("请输入用户名:")
    if username.upper()=="Q":break
    else:
        password=input("输入密码:")
        dic={}
        dic["name"]=username
        dic["password"]=password
        list.append(dic)
print(list)

8.需求:

(1.读出下列程序结果
v1={"k1":"v1","k2":[1,2,3]}
v2={"k1":"v1","k2":[1,2,3]}
result=v1==v2
result1=v1 is v2
print(result,result1)
#结果True False

因为不论是同代码的缓存机制还是小数据池缓存机制都只只用于bool int str三种数据类型

(2.读出下列的程序结果
v1="dfsfsf"
v2=[1,2,4,v1]
v1="fsfdfsfsdfs"
print(v2)
#结果[1, 2, 4, 'dfsfsf']

原因解释是这里是字符串,不可以变得数据结构,然后在V1赋值的时候相当于开辟了一个新的数值地址,因为不可变还是V2还是指向了v1运来值的地址

(3.读出下列的程序结果
list=[]
dict={}
for i in range(10):
    dict["user"]=i
    list.append(dict)
print(list)
#结果[{'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}]
list=[]
for i in range(10):
    dict = {}
    dict["user"]=i
    list.append(dict)
print(list)
#结果[{'user': 0}, {'user': 1}, {'user': 2}, {'user': 3}, {'user': 4}, {'user': 5}, {'user': 6}, {'user': 7}, {'user': 8}, {'user': 9}]

解释,前面因为最后一步对字典进行了更改,后面因为每次添加的列表都是一个新的字典,所以数字不是重复的

9.设定一个理想的数字比如88,让用户输入数字,如果比88大,则显示猜测的结果大;如果比66小,则显示猜测的结果小了,给用户三次猜测机会,如果显示猜测正确退出循环,如果没有猜测正确,则自动退出循环,显示“你太蠢了”

number=88
count=0
while count<3:
    inputnumber=int(input("请输入数字:"))
    if inputnumber>number:
        print("结果大了")
    elif inputnumber<number:
        print("结果小了")
    else:
        print("恭喜你猜对了")
        break
    count+=1
else:
    print("你太蠢了")

10.求1-2+3-4+5…99的和

count=1
s=0
while count<100:
    if count%2==0:
        s=s-count
    else:
        s=s+count
    count+=1
print(s)

11.写一个登录认证脚本,包括用户名,密码,验证码,如果输入三次失败,系统退出,输入正确显示登录成功。

count=0
while count<3:
    username=input("please input your username:")
    password=input("please input your password:")
    code="abcd"
    your_code=input("please input your code:")
    if your_code==code:
        if username=="xiaoming"and password=="123":
            print("success!")
            break
        else:
            print("your uesename or password is error!")
            count=count+1
    else:
        print("your code is error!!")
        count+=1
exit("You've logged in three times")

12.输出1~100所有数字

#方法一比较傻瓜式
count=0
flag=True
while flag:
    if count==100:
        flag=False
    else:
        count=count+1
        print(count)
#方法二
number=0
while number<100:
    number=number+1
    pint(number) 

13.输出1~100中的所有偶数:%

count=2
while True:
    print(count)
    count=count+2
    if count==102:
        break

结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!

Python基础入门教程推荐:更多Python视频教程-关注B站:Python学习者

Python爬虫案例教程推荐:更多Python视频教程-关注B站:Python学习者

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值