python 函数.png
python 函数.xmind

作业1

  1. 统计列表中每个元素出现的次数。
    1. nums = [100,-1,1,100,100,100,-2,-1,0,1,2]

分析:
列表中使用count方法 可以统计元素出现的次数。

  1. nums = [100,-1,1,100,100,100,-2,-1,0,1,2]
  2. n1 = nums.count(100)
  3. print(n1)
  4. n2 = nums.count(-1)
  5. print(n2)

根据上面,初步可以使用for循环的方式来统计

  1. nums = [100,-1,1,100,100,100,-2,-1,0,1,2]
  2. for n in nums:
  3. print(n,nums.count(n))

这种方式统计出来的结果。结果有冗余。image.png
将列表转换为集合。通过循环集合来获取每个元素出现的次数。

  1. nums = [100,-1,1,100,100,100,-2,-1,0,1,2]
  2. # 将列表转换集合,去掉重复数据。
  3. set_nums = set(nums)
  4. # 循环集合
  5. for n in set_nums:
  6. print(f"{n}出现了{nums.count(n)}次")

image.png

  1. 定义一个函数,生成随机一个11位手机号码
    1. def phone():
    2. pass
    ```python import random

def phone():

  1. # 前3位
  2. pre_3 = ["130","131","132","133","134","135","136","137","138","139",
  3. "150","151",'156','155','157','158','159']
  4. # 随机从列表中选择一个
  5. p_num = random.choice(pre_3)
  6. print(p_num)
  7. # 生成后8位
  8. # 循环8次
  9. for i in range(8):
  10. # 每次都生成一个 0-9 之间的随机数
  11. n = random.randint(0,9)
  12. # 将生成的数字 跟前面生成手机前三位拼接
  13. p_num = p_num+str(n) # str(n) 将数字转换为字符串
  14. # for循环执行完成,最终生成结果.
  15. print(p_num)

调用

phone()

  1. 3. 模拟ATM取款机输入密码登录,如果密码输入错误,提示用户重新输入。输入成功,进入到系统。失败3次,结束程序。
  2. ```python
  3. passwd = "8989"
  4. # 现在开始模拟输入密码

for循环else

  1. passwd = "8989"
  2. # 现在开始模拟输入密码
  3. for i in range(3):
  4. pwd = input("请输入密码:")
  5. # 如果输入正确
  6. if passwd == pwd:
  7. print("密码输入成功,进入系统")
  8. break
  9. else:
  10. print("密码输入错误!")
  11. else: # 如果for循环正常执行完毕,会执行esle中的语句
  12. print("错误次数已经达到3次,请明天再试!")

作业延申

  1. 还是这个列表。
    1. nums = [100,-1,1,100,100,100,-2,-1,0,1,2]
    里面的元素值按照从小到大 的顺序,统计每个元素出现的次数。 ```python nums = [100,-1,1,100,100,100,-2,-1,0,1,2]

去重 使用集合的特性进行去重

nums_set = set(nums) print(nums_set)

排序 将集合转换为列表

nums_list = list(nums_set) print(nums_list)

列表进行排序

nums_list.sort() print(nums_list) # [-2, -1, 0, 1, 2, 100]

循环已经排好序的列表,来统计每个元素出现的次数

for n in nums_list: print(f”数字\t{n}\t在列表nums中出现了\t{nums.count(n)}\t次”)

  1. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/87080/1657198448873-5d74b4a6-87ab-493a-b4cd-678b2cfa38ae.png#clientId=ua74ebb1b-f728-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=277&id=u074d5263&margin=%5Bobject%20Object%5D&name=image.png&originHeight=554&originWidth=928&originalType=binary&ratio=1&rotation=0&showTitle=false&size=75366&status=done&style=none&taskId=u625ddba7-edb8-4b2b-b66c-93d29d9867d&title=&width=464)
  2. <a name="RanF2"></a>
  3. # 嵌套循环
  4. 可以在循环中再编写循环。
  5. ```python
  6. results = {
  7. "data":[
  8. {"id": 1, "goodsname": "iphone", "price": 5666},
  9. {"id": 2, "goodsname": "xiaomi", "price": 8666},
  10. {"id": 3, "goodsname": "huawei", "price": 2666},
  11. {"id": 4, "goodsname": "hongmi", "price": 3666},
  12. ]
  13. }
  14. # 将data 中每个商品按照 price价格的从低到高 排序, 输出对应的商品名。
  15. print(results["data"])
  16. # 定义一个空的列表
  17. all_price = []
  18. # 循环data 列表中的每个元素
  19. for good in results["data"]:
  20. # print(good)
  21. for k,v in good.items():
  22. # 获取商品的价格
  23. if k == "price":
  24. print(v)
  25. # 价格放在列表中
  26. all_price.append(v)
  27. # 所有的商品循环完毕
  28. print(f"所有的商品价格 {all_price}")
  29. # 价格进行排序
  30. all_price.sort()
  31. print(f'排序完成之后的价格 {all_price}')
  32. # 根据价格找到对应的商品名称
  33. for p in all_price:
  34. # 拿到已经排好序的价格
  35. for good in results["data"]:
  36. for k,v in good.items():
  37. # 如果price 字段的值 跟排好序的价格一样
  38. if k=="price" and v == p:
  39. print(f" {p} 对应的商品名字:{good['goodsname']}")

嵌套循环的时候一定要主要保持格式上的缩进。