当前位置: 首页> 科技> IT业 > Python之函数练习题

Python之函数练习题

时间:2025/7/11 18:21:51来源:https://blog.csdn.net/weixin_43325374/article/details/141349229 浏览次数:0次

1.画出函数的组成部分并给出标注。为每个部分写出简短的定义。

函数的三个基本组成部分是:定义域、函数和值域。
定义域是函数可以接受的输入值集合。
函数是将一个集合(定义域)中的元素对应到另一个集合(值域)中的元素的规则。
输入值称为自变量,输出值称为因变量。

2.编写菜单:
(a)编写任何软件时,通常都有一个相同的任务,即显示菜单并要求用户在菜单上进行选择。手机上的菜单就是一个实例。菜单选项有信息、通讯录、游戏、设置、媒体和网络(或其他)。写一个函数displayMenu,向用户显示菜单,并允许用户做出选择(使用input)。

def displayMenu():print("----------------------菜单---------------------")print("---------------1、信息-----------------------")print("---------------2、通讯录--------------------")print("---------------3、游戏-----------------------")print("---------------4、设置-----------------------")print("---------------5、媒体和网络--------------")print("---------------6、其他-----------------------")choose=input("请你输入要操作的选项(1-6的整数):")return choose

(b)写一个函数获取用户的选择,调用相应的函数。(提供有意义的函数名称,不必编写其他函数的定义。)

def getChoose():return displayMenu()

3、编写函数将两个足球队的最后得分作为参数输入,输出哪个队获胜或者比赛终止。请引用变量名“Team1”或“Team2"。该函数不返回任何内容。

def getResult(Team1,Team2):if  Team1<Team2:print("队伍2获胜")elif Team1>Team2:print("队伍1获胜")else:print("平手,比赛终止")

4、编写函数,输入英文句子(字符串),输出句子中元音的个数和辅音的总个数。该函数不返回任何内容。请注意句子可能包含特殊字符,如点、破折号等。

用isalpha()函数排除非字母字符,只有是字母字符的才做下一步判断。def count_vowels_consonants(sentence):  vowels = 'aeiouAEIOU'  vowel_count = 0  consonant_count = 0  for char in sentence:     if char.isalpha():  if char in vowels:  vowel_count += 1  else:  consonant_count += 1  print(f"元音个数: {vowel_count}")  print(f"辅音个数: {consonant_count}")

5、斐波拉契数列是:1,1,2,3,5,8,13…。可以看到,第一个和第二个数字均为1。此后每个数字是前两个数字的总和。
(a)编写函数来输出Fibonacci序列的前n个数字。
(b)编写函数,显示序列中的第n个数字。

(a)
def fibonacci_sequence(n):  """  输出 Fibonacci 序列的前 n 个数字。  """  if n <= 0:  print("n 必须大于 0")  return  fibonacci_nums = [1, 1]  if n == 1:  print(fibonacci_nums[0])  elif n == 2:  print(", ".join(map(str, fibonacci_nums)))  else:  for i in range(2, n):  next_num = fibonacci_nums[-1] + fibonacci_nums[-2]  fibonacci_nums.append(next_num)  print(", ".join(map(str, fibonacci_nums)))
(b)
def nth_fibonacci(n):  """  显示 Fibonacci 序列中的第 n 个数字。  """  if n <= 0:  print("n 必须大于 0")  return  if n == 1 or n == 2:  print(1)  else:  a, b = 1, 1  for i in range(3, n + 1):  a, b = b, a + b  print(b)

6.假设你在互联网上在线购买东西。如果你是会员,在网站购买会得到10%的折扣。此外,因为是父亲节,还会获得额外的5%折扣。
编写函数,输入购买商品的价格和布尔变量(表示是否为会员)。使用适当的折扣,并返回该商品的最终价格。注:该商品的价格不必是整数。

def getPrice(price,is_vip):if is_vip:return price*0.9*0.95else:return price*0.95

7.闰年在公历系统中是能被4整除但不能被100整除,或者能被400整除的那些年份。例如1896年、1904年和2000年是闰年,但1900年不是。写一个数,输入为年份,输出是否为闰年。

def is_run(year):if (year%4==0 and year%100!=0) or year%400==0:print("%d是闰年。"%year)else:print("%d不是闰年。"%year)

8:这个函数实现什么功能?对于num=5,该函数返回什么?
def Func(num):
total =0
while num> 0:
total=total +num*(num-1)
num=num-1
return total

循环中循环变量一直减1,直到不大于0,跳出循环。
每次循环将当前数字和小它1的数字相乘,然后把结果加到total中
最后返回total
所以函数的功能是:计算1*2+2*3+。。。+(num-1)*n
当num=5时,1*2+2*3+3*4+4*5=40

9.这个函数实现什么功能?如果x=5,该函数返回什么?
def Func(x):
total = 0
for i in range(x):
total += i*(i-1)
return total

循环从0到x-1
功能:计算1*2+2*3+。。。+(x-1)*(x-2)
当x=5时,1*2+2*3+3*4=20

10.这个函数实现什么功能?返回值是什么?
def Func():
num=1.0
total =0
while num < 100:
total = 1/num
num+=1
return total

循环变量从初始值1.0到不小于100,也就是99。
循环时,total=1/num
返回值为1/99

11、错误检查时给出有意义的错误消息,是编程中非常重要的组成部分。以下面的场景为例:顾客每月支付信用卡账单。卡的信用额度是1000美元。最低还款额始终是20美元。假设信用卡还款额为P美元。编写函数makePayment§,参数为信用卡的总还款额($P),输出为"Success”或者“Retry”。试想实现此函数时所有可能发生的错误。例如,如果还款不足20美元,该程序应提醒用户还款少于最低还款额。

def makePayment(P):  # 信用额度  credit_limit = 1000  # 最低还款额  minimum_payment = 20  # 检查还款金额是否小于最低还款额  if P < minimum_payment:  return ("错误: 还款金额 %f美元少于最低还款额%f美元"  %(P,minimum_payment ))# 检查还款金额是否超出信用额度  if P > credit_limit:  return ("错误: 还款金额 %f美元超出信用额度 %f美元"  %(P,credit_limit ))# 还款成功  return "Success"

12.你购买了打往印度的国际电话卡,电话卡公司有一些优惠政策:
(a)如果用信用卡支付5美元或10美元,没有额外赠品。
(b)支付25美元,你会得到价值3美元的额外电话时间。
(e)支付50美元,你会得到价值8美元额外的电话时间。
(d)支付100美元,你会得到价值20美元的额外电话时间。
编写函数,输入用户希望获得的金额,返回用户得到的总价值。注:除上述情况外,不允许出现其他情况。

def jiazhi(money):if money==5 or money==10:return moneyelif money==25:return money+3elif money==50:return money+8elif money==100:return money+20

13.编写函数,输入为质量,返回与其相当的能量。(E=mc²)。使用米-千克-秒单位制。

def energy(m):return m*c*c

14.聊天:
(a)在某些聊天程序或消息应用程序中有一个限制,即可以在消息中发送的字符数。编写函数,输入为消息(字符串),检查字符数是否小于160。如果消息的长度少于160,返回该消息。如果消息的长度大于160,则只返回前160个字符组成的字符串。
(b)如果限制的是单词数而不是字符数,如何进行检查?写一个函数,只允许含20个单词的消息。

(a)
def getMessage(s):if len(s)<=160:return selse:return s[:160]
(b)
单词是以空格来分隔的,用split()
def getword(s):n=len(s.split(" "))if n<=20:return selse:return “ ”.join(s.split(" ")[:20])

15.编写函数,输出100以内6和10的所有公倍数。在一般情况下,函数有三个输入参数:要求公倍数的两个数字(x和y)和上限z。

def gong(x,y,z):for i in range(z):if i%6==0 and i%10==0:print(i)

16.用来确定是否创建独立函数的三项准则是什么?

重复性:如果某段代码会被多次重复使用,那么将其封装为独立函数是一个好主意。这样可以减少代码重复,提高代码的可维护性。抽象性:如果某段代码实现了一个较为通用的功能,可以将其抽象为一个独立函数。这样可以增强代码的可复用性,使代码更加模块化和可理解。复杂性:如果某段代码逻辑较为复杂,包含多个步骤或嵌套结构,那么将其封装为独立函数可以提高代码的可读性和可维护性。

19.编写函数,输入一个字符串,以如下格式存储为日期和时间(24小时制),“MM/DD/YYYY HR:MIN:SEC”并输出以下内容:
DD/MM/YYYY
HR: MIN:SEC
MM/YYYY
时间是“AM”或“PM"
函数中需要进行输入验证。例如,如果用户输入“122/04/199013:12:12",该字符串是无效的,因为一年只有12个月。考虑所有可能的错误输入,并编写代码进行处理。该函数不返回任何值。

def time(s):month,day,year=s.split()[0].split("/")hour,min,sec=s.split()[1].split(":")if  month<=0 or month>12 or day<1 or day>31 or year<1 or hour<0 or hour>25 or min<0 or min>59 or sec<0 or sec>59:print("输入的日期和时间格式有误,请重新输入.")  returnprint("%d/%d/%d"%(day,month,year))print("%d:%d:%d"%(hour,min,sec))print("%d/%d"%(month,year))if  hour<12:print("时间是AM")else:print("时间是PM")

20.编写函数,输入字符串,日期和时间存储为“MM/DD/YYYYHR:MIN:SEC”格式,输出从“01/01/YYYY 00:00:00”开始计时的秒数。

import datetime  def get_seconds(datetime_str):  # 1. 将输入的字符串转换为datetime对象  month, day, year, hour, minute, second = map(int, datetime_str.split(" "))  input_datetime = datetime.datetime(year, month, day, hour, minute, second)  # 2. 计算从当年1月1日 00:00:00 开始的秒数  start_of_year = datetime.datetime(year, 1, 1, 0, 0, 0)  seconds = (input_datetime - start_of_year).total_seconds()  return int(seconds)

21.编写函数,显示A~B(含)范围中,所有位上的数字都属于集合[1,3,4,8,9]的数字。检查是否A小于或等于B,否则交换这两个数字。该函数有两个整型参数:A和B。

def show_valid_numbers(A, B):  # 检查A和B的大小关系  if A > B:  A, B = B, A  # 创建集合[1, 3, 4, 8, 9]  valid_digits = set([1, 3, 4, 8, 9])  # 遍历范围[A, B]内的所有数字  for num in range(A, B + 1):  # 将数字转换为字符串  num_str = str(num) # 检查数字的每一位是否都在集合valid_digits中  flag=1  #标记,1符合,0不符合for digit in num_str:if int(digit) not in valid_digits:flag=0break   #不符合flag=0并结束这个数字的循环if flag:print(num)  

22.给出形如"{ABC}”的字符串,代表长度为3的集合。写一个函数,输入字符串为参数,并返回以逗号分隔的各种排列形式,如“{ABC,ACB,BAC,BCA,CAB,CBA}"。提示:使用多个for循环。

def a(s):ss=s[1:-1]  #去掉大括号sss=""for i in range(3):for j in range(3):for k in range(3):if i==j or i==k or j==k:continueelse:sss=sss+i+j+ksss="{"+ssssss.replace(sss[-1],"}")   #最后一个多了一个逗号,替换掉
关键字:Python之函数练习题

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: