学习目标:
python函数部分例题
学习内容:
1、简易购物车
2、常见的格式化
3、随机点名
4、九九乘法表
5、将字符串倒序并且用特殊字符隔开
6、一句话实现计算器
7、列表去重
8、python生成器实现杨辉三角
9、用filter高级函数找出一定范围内的素数
10、查找一定范围内的回数(从左到右个和从有到左都是一样的)
11、输入一个元组并对其进行排序输出
12、输出一个列表中的不同元素的最大值并去重
1、简易购物车
import random
import copy
money = 300
total_price = 0
flag = 'ok'
lists = []
goods_lists = [['水果', [['苹果', 15], ['鸭梨', 13], ['桃子', 12], ['香蕉', 11]]], ['蔬菜', [['黄瓜', 8], ['土豆', 6], ['白菜', 4], ['茄子', 10], ['地瓜', 9]]]]
# goods_lists_dict = [{'水果': [{'苹果': 15}, {'鸭梨': 13}, {'桃子': 12}, {'香蕉': 11}]}, {'蔬菜': [{'黄瓜': 8}, {'土豆': 6}, {'白菜': 4}, {'茄子': 10}, {'地瓜': 9}]}]
def total_things():
print('商品名 单价 数量 总价')
for a, b, c, d in lists:
print('' + a, ' ' * 3 + str(b), ' ' + str(c), ' ' + str(d))
print('一共消费:' + str(total_price))
while money-total_price >= 0:
break
else:
print('余额不足,超出' + str(abs(money - total_price)) + '元'+',''请充值')
while True:
if flag == 'no':
if len(lists) == 0:
choice = input('您尚未购买任何商品,是否退出(y/n)')
if choice == 'y':
break
else:
flag = 'ok'
continue
total_things()
break
n=1
for a, b in goods_lists:
print(str(n)+' '+a)
n+=1
num1 = int(input('请选择需要购买的种类:(输入-1退出结算)'))-1
if num1 == -2:
flag = 'no'
continue
while True:
m=1
for goods in goods_lists[num1][1]:
print(str(m) + ' ' + goods[0]+' '+str(goods[1])+'元')
m+=1
num2 = int(input('请输入选择的商品:(输入-1进行结算,输入0返回上一级菜单)'))-1
if num2 == -1:
break
if num2 == -2:
flag = 'no'
break
num3 = int(input('请输入购买数量:'))
n_lists= []
n_lists.append(goods_lists[num1][1][num2][0])
n_lists.append(goods_lists[num1][1][num2][1])
n_lists.append(num3)
n_lists.append(goods_lists[num1][1][num2][1] * num3)
lists.append(n_lists)
total_price = total_price + goods_lists[num1][1][num2][1] * num3
if money - int(total_price) < 0:
print('您所购买的商品已经超出您的余额:'+'\033[1;32;41m'+str(abs(money - int(total_price)))+'\033[0m'+'元')
2、格式化的常见几种方法
username = input('请输入用户名')
yue = input('请输入月份')
hua = input('请输入话费')
yu = input('请输入余额')
# 方法一:
print('亲爱的%s你好!你%s月的话费是%.2f,余额是%.2f'%(username,yue,float(hua),float(yu)))
# 方法二:
print('亲爱的{0}你好!你{1}月的话费是{2:.1f},余额是{3:.2f}'.format(username,yue,float(hua),float(yu)))
# 方法三:
print('亲爱的'+username+'你好!你'+yue+'月的话费是'+hua+',余额是'+yu)
# 方法四
username = input("请输入用户名")
month = input("请输入月份")
hf = float(input("请输入话费"))
ye = float(input("请输入余额"))
print(f"亲爱的{username}您好,您的月{month}话费是{hf:.1f}元,余额是{ye:.1f}")
3、随机点名
import random
x = int(input('请随机输入一个数:'))
lists = ['Michael', 'Bob', 'Tracy', 'tom', 'jack']
for i in range(x):
yyt = random.randrange((len(lists)))
print(lists.pop(yyt))
4、九九乘法表
for i in range(1, 10):
strs = '\n'
for j in range(1, i+1):
strs+=(str(i)+'*'+str(j)+'='+str(i*j)+' ')
print(strs)
5、将字符串倒序并且用特殊字符隔开
s = 'aasadaDS'
s = [x for x in s]
for i in range(len(s)//2):
a = s[i]
b = s[-(i+1)]
s[i] = b
s[-(i + 1)] = a
s = '*'.join(s)
print(s)
输出:
S*D*a*d*a*s*a*a
6、一句话实现计算器
value = eval(input('请输入第一个数:')+input('请输入一个运算符:')+input('请输入第二个数:'))
print(value)
7、列表去重
alist = [1, 2, 3, 1, 2]
# 第一种方法:
print(list(set(alist)))
# 第二种方法:
a = []
for i in alist:
if i not in a:
a.append(i)
print(a)
# 第三种方法:
d = {}
alist = d.fromkeys(alist).keys()
print(alist)
# 第四种方法:
import numpy as np
n = np.unique(alist)
print(n)
# 第五种方法:
import itertools
demo = itertools.groupby(alist)
alist = []
for a,b in demo:
alist.append(a)
print(alist)
8、python生成器实现杨辉三角
def fid(max):
l = [1]
n = 0
while n < max:
yield l
l=[1]+[l[i]+l[i+1] for i in range(len(l)-1)]+[1]
n+=1
for i in fid(max):
print(i)
9、用filter高级函数找出一定范围内的素数
def num():
n = 1
while True:
n = n+2
yield n
def not_divisible(n):
return lambda x:x%n>0
def get_list():
yield 2
it = num()
while True:
n = next(it)
yield n
it = filter(not_divisible(n), it)
for n in get_list():
if n < 1000:
print(n)
else:
break
10、查找一定范围内的回数(从左到右个和从有到左都是一样的)
def is_palindrome(num):
num = str(num)
a = 0
for i in range(len(num)//2):
if num[i] == num[-i-1]:
pass
else:
a = 1
if a == 0:
return True
else:
return False
output = filter(is_palindrome, range(1, 10000))
print('1~10000:', list(output))
11、输入一个元组并对其进行排序输出
def student(**a):
print(a)
dicts = {k:v for v, k in a.items()}
b = sorted(dicts.keys(),reverse=True)
dict = []
for i in b:
dict.append(dicts[i])
return dict
print(student(Bob=99, Jack=95, Amy=100))
12、输出一个列表中的不同元素的最大值并去重
lists = [("a", 1), ("b", 1), ("a", 5), ("a", 2)]
1、
k = {}
for a, b in lists:
if a not in k.keys():
k[a] = b
else:
k[a] = max(k[a], b)
print(k)
2、
data = sorted(lists, key=lambda x:x)
key = {}
for a, b in data:
key[a] = b
print(key)