python入门学习随记(十)

这篇博客记录了Python编程中的函数应用,包括人民币美元双向兑换、找零问题、圆形生成器、薪资计算、Fibonacci数计算、递归调用等实战案例,旨在帮助初学者掌握函数的使用和递归概念。

10-1 人民币美元双向兑换

本体要求实现一个人民币与美元的双向兑换函数change(money),可实现1美元=6.709人民币的双向兑换。输出兑换的结果保留2位小数。

函数接口定义:
在这里描述函数接口。例如:
change( money )
其中 money都是用户传入的参数,表示待兑换的钱数。

裁判测试程序样例:

/ 请在这里填写答案 /

x = input()

change(x)

输入样例1:
在这里给出一组输入。例如:

$1

输出样例1:
在这里给出相应的输出。例如:

1美元 = 6.71人民币

输入样例2:
在这里给出一组输入。例如:

¥1

输出样例2:
在这里给出相应的输出。例如:

1人民币 = 0.15美元

def change(n):
    m = float(n[1::])
    x = list(n)
    if x[0] == '$':
        print('{0}美元 = {1:.2f}人民币'.format(int(m),6.709*m))
    elif x[0] == '¥':
        print('{0}人民币 = {1:.2f}美元'.format(int(m),m/6.709))

10-2 jmu-python-函数-找钱

买单时,营业员要给用户找钱。营业员手里有10元、5元、1元(假设1元为最小单位)几种面额的钞票,其希望以
尽可能少(张数)的钞票将钱换给用户。比如,需要找给用户17元,那么其需要给用户1张10元,1张5元,2张1元。
而不是给用户17张1元或者3张5元与2张1元。

函数接口定义:
giveChange(money) #money为要找的钱。经过计算,应按格式"要找的钱 = x10 + y5 + z*1"输出。
裁判测试程序样例:

/* 请在这里填写答案 */
n =  int(input())
for i in range(n):
    giveChange(int(input()))

输入样例:

5
109
17
10
3
0

输出样例:

109 = 10*10 + 1*5 + 4*1
17 = 1*10 + 1*5 + 2*1
10 = 1*10 + 0*5 + 0*1
3 = 0*10 + 0*5 + 3*1
0 = 0*10 + 0*5 + 0*1

def giveChange(x):
    a = x // 10
    b = (x - 10*a )//5
    c = x -a*10 -b*5
    print('{0} = {1}*10 + {2}*5 + {3}*1'.format(x,a,b,c))
   

6-3 jmu-python-函数-圆形生成器

请大家严格按照下面顺序编写圆形生成器程序:

定义函数getCircleArea®。功能:可对指定r计算圆面积。请使用公式math库的pirr进行计算。
定义函数get_rList(n)。功能:输入n个值放入列表并将列表return。
输入n,调用get_rList(n)获得列表rList。说明:已有代码,不需要你编写。
遍历rList,对每个元素调用getCircleArea,并按指定格式输出。说明:已有代码,不需要你编写。
注意:1.需导入程序中所需要的库。2.仅需提交两个函数的完整代码。

函数接口定义:
getCircleArea® #r代表整数半径
get_rList(n) #n代表在函数中输入n个值放入列表。
裁判测试程序样例:

/* 请在这里填写答案 */
n = int(input())
rList = get_rList(n)
for e in rList:
    print('{:10.3f}'.format(getCircleArea(e)))
print(type(rList))

输入样例:

3
1
2
3

输出样例:

 3.142
12.566
28.274
<class 'list'>
def getCircleArea(r):
    r = float(r)
    import math
    return math.pi * r * r
def get_rList(n):
    lst = []
    for i in range(n):
        lst.append(input())
    return lst

10-4 jmu-python-计算薪资

某公司销售员底薪为5000,销售业绩与利润提成的关系如下表所示(计量单位:元)

在这里插入图片描述

编写函数,计算员工月薪。

函数接口定义:
bonus(sales)
其中 sales 是参数,表示员工的月销售业绩。

裁判测试程序样例:

/* 请在这里填写答案 */
sales=eval(input())
print("%.2f"%bonus(sales))

输入样例1:

50800

输出样例1:

15160.00

输入样例2:

35000

输出样例2:

10250.00

def bonus(sales):
    s = float(sales)
    n = 5000
    if s <= 10000:
        return n
    elif s > 10000 and s <= 20000:
        return s*0.1 + n
    elif s > 20000 and s <= 50000:
        return s*0.15 + n
    elif s > 50000 and s <= 100000:
        return s*0.2 +n
    else:
        return s*0.25 + n 

10-5 使用函数输出指定范围内Fibonacci数的个数

本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m<n≤100000)之间的所有Fibonacci数的数目。 所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,fib(0)=fib(1)=1。其中函数fib(n)须返回第n项Fibonacci数;函数PrintFN(m,n)用列表返回[m, n]中的所有Fibonacci数。

函数接口定义:
在这里描述函数接口。例如:
fib(n),返回fib(n)的值
PrintFN(m,n),用列表返回[m, n]中的所有Fibonacci数。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:

/* 请在这里填写答案 */

m,n,i=input().split()
n=int(n)
m=int(m)
i=int(i)
b=fib(i)
print("fib({0}) = {1}".format(i,b))
fiblist=PrintFN(m,n)
print(len(fiblist))

输入样例:
在这里给出一组输入。例如:

20 100 6

输出样例:
在这里给出相应的输出。例如:

fib(6) = 13
4

def fib(n):
    if n == 0 or n == 1:
        return 1
    else:
        return (fib(n-1)+fib(n-2))
def PrintFN(m,n):
    alist = []
    a = 0
    while fib(a) < m:
        a = a + 1
    while fib(a) >= m and fib(a) <= n:
        alist.append(fib(a))
        a = a + 1
    return alist

10-6 函数的递归调用

有n个人坐在一起,第n个人比第n-1个人大2岁,第n-1个人比第n-2个人大2岁,以此类推,……,第1个人是10岁。请问第n个人年龄多大?

输入格式:
输入一个整数表示第几个人。

输出格式:
输出第n个人是m岁。

输入样例:

5

输出样例:

Number 5 is 18 age!

def func(n):
    if n == 1:
        return 10
    else :
        return 2 + func(n-1)
x = int(input())
print("Number {0} is {1} age!".format(x,func(x)))

10-7 函数的递归调用

编写求n!的程序。要求:编写一个函数实现求出给定的n的值的阶乘。主函数负责确定n的值、调用自定义的函数,并输出计算结果。

输入格式:
输入一个任意整数n的值。

输出格式:
若n=0或n=1,则n!=1;若n<0,输出“给定的数<0,no value!no value!”的结果。

输入样例:
在这里给出一组输入。例如:

5

输出样例:
在这里给出相应的输出。例如:

5!=120

def func(n):
    if n == 1 or n == 0:
        return 1
    else:
        return n * func(n-1)
x = int(input())
if x >= 0:
    print('{0}!={1}'.format(x,func(x)))
else:
    print('给定的数<0,no value!no value!')

10-8 显示菱形
请编写函数,输入菱形的行数和组成菱形的字符,输出对应的菱形图像。

输入样例

5 $

输出样例

  $  
 $$$ 
$$$$$  
 $$$   
  $

要求:若行数小于等于 0,则输出 None;若行数是偶数,则输出Error。

def func(x,y):
        for i in range(1,x+1,2):
            print(((str(y))*i).rjust(x//2+i//2+1))
        for n in range(x-2,0,-2):
            print(((str(y))*n).rjust(x//2+n//2+1))
        
x,y = input().split()
x = int(x)

if x > 0 and x % 2 != 0 :
    func(x,y)
elif x <= 0 :
    print('None')
else :
    print('Error')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值