python函数部分例题练习汇总(购物车、随机点名、九九乘法表...)

学习目标:

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)
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值