作业1
- 统计列表中每个元素出现的次数。
nums = [100,-1,1,100,100,100,-2,-1,0,1,2]
分析:
列表中使用count方法 可以统计元素出现的次数。
nums = [100,-1,1,100,100,100,-2,-1,0,1,2]
n1 = nums.count(100)
print(n1)
n2 = nums.count(-1)
print(n2)
根据上面,初步可以使用for循环的方式来统计
nums = [100,-1,1,100,100,100,-2,-1,0,1,2]
for n in nums:
print(n,nums.count(n))
这种方式统计出来的结果。结果有冗余。
将列表转换为集合。通过循环集合来获取每个元素出现的次数。
nums = [100,-1,1,100,100,100,-2,-1,0,1,2]
# 将列表转换集合,去掉重复数据。
set_nums = set(nums)
# 循环集合
for n in set_nums:
print(f"{n}出现了{nums.count(n)}次")
- 定义一个函数,生成随机一个11位手机号码
```python import randomdef phone():
pass
def phone():
# 前3位
pre_3 = ["130","131","132","133","134","135","136","137","138","139",
"150","151",'156','155','157','158','159']
# 随机从列表中选择一个
p_num = random.choice(pre_3)
print(p_num)
# 生成后8位
# 循环8次
for i in range(8):
# 每次都生成一个 0-9 之间的随机数
n = random.randint(0,9)
# 将生成的数字 跟前面生成手机前三位拼接
p_num = p_num+str(n) # str(n) 将数字转换为字符串
# for循环执行完成,最终生成结果.
print(p_num)
调用
phone()
3. 模拟ATM取款机输入密码登录,如果密码输入错误,提示用户重新输入。输入成功,进入到系统。失败3次,结束程序。
```python
passwd = "8989"
# 现在开始模拟输入密码
for循环else
passwd = "8989"
# 现在开始模拟输入密码
for i in range(3):
pwd = input("请输入密码:")
# 如果输入正确
if passwd == pwd:
print("密码输入成功,进入系统")
break
else:
print("密码输入错误!")
else: # 如果for循环正常执行完毕,会执行esle中的语句
print("错误次数已经达到3次,请明天再试!")
作业延申
- 还是这个列表。
里面的元素值按照从小到大 的顺序,统计每个元素出现的次数。 ```python nums = [100,-1,1,100,100,100,-2,-1,0,1,2]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次”)
![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)
<a name="RanF2"></a>
# 嵌套循环
可以在循环中再编写循环。
```python
results = {
"data":[
{"id": 1, "goodsname": "iphone", "price": 5666},
{"id": 2, "goodsname": "xiaomi", "price": 8666},
{"id": 3, "goodsname": "huawei", "price": 2666},
{"id": 4, "goodsname": "hongmi", "price": 3666},
]
}
# 将data 中每个商品按照 price价格的从低到高 排序, 输出对应的商品名。
print(results["data"])
# 定义一个空的列表
all_price = []
# 循环data 列表中的每个元素
for good in results["data"]:
# print(good)
for k,v in good.items():
# 获取商品的价格
if k == "price":
print(v)
# 价格放在列表中
all_price.append(v)
# 所有的商品循环完毕
print(f"所有的商品价格 {all_price}")
# 价格进行排序
all_price.sort()
print(f'排序完成之后的价格 {all_price}')
# 根据价格找到对应的商品名称
for p in all_price:
# 拿到已经排好序的价格
for good in results["data"]:
for k,v in good.items():
# 如果price 字段的值 跟排好序的价格一样
if k=="price" and v == p:
print(f" {p} 对应的商品名字:{good['goodsname']}")
嵌套循环的时候一定要主要保持格式上的缩进。