赞
踩
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.95
else:
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 money
elif money==25:
return money+3
elif money==50:
return money+8
elif 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 s
else:
return s[:160]
(b)
单词是以空格来分隔的,用split()
def getword(s):
n=len(s.split(" "))
if n<=20:
return s
else:
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("输入的日期和时间格式有误,请重新输入.")
return
print("%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=0 break #不符合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:
continue
else:
sss=sss+i+j+k
sss="{"+sss
sss.replace(sss[-1],"}") #最后一个多了一个逗号,替换掉
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。