文档库 最新最全的文档下载
当前位置:文档库 › Python 实验8 函数1

Python 实验8 函数1

Python 实验8 函数1
Python 实验8 函数1

实验8 函数(一)实验目的:

1、理解自定义函数过程的定义与调用方法;

2、掌握自定义函数的定义与调用方法;

3、理解函数中的参数的作用;

实验内容:

1、编写一函数Fabonacci(n),其中参数n代表第n 次的迭代。While循环

def fib(n):

if n==1 or n==2:

return 1

a=1

b=1

i=2

while True:

c=a+b

a=b

b=c

i+=1 #第i次迭代,也就就是第i个数

if i==n:

return c

break

def main():

n=input("Enter a number of generation:")

print fib(n)

main() 或者用for循环

def fib(n):

a=1

b=1

c=0

if n==1 or n==2:

return 1

else:

for i in range(3,n+1):

c=a+b

a=b

b=c

return c

def main():

n=input("enter n:")

print fib(n)

main()

2、编写一函数Prime(n),对于已知正整数n,判断该数就是否为素数,如果就是素数,返回True,否则返回

False。

def prime(n):

if n<2:

return False

a=0

for i in range(1,n+1):

if n%i==0:

a+=1

if a>2:

return False

else:

return True

def main():

n=input("Enter a number:")

print prime(n)

main() Or:

def prime(n):

if n<2:

return False

if n==2:

return True

for i in range(2,n):

if n%i==0:

return False

return True

def main():

n=input("Enter a number:")

print prime(n)

main()

3、利用上题中判断素数的函数,编写程序找出1~100之间的所有孪生素数(若两个素数之差为2,则这两个素数就就是一对孪生素数)。例如:3与5、5与7、11与13等都就是孪生素数。

【提示】如果n 与n+2都就是素数,那就就是孪生素数。

def prime(n):

if n<2:

return False

if n==2:

return True

for i in range(2,n):

if n%i==0:

return False

return True

def main():

for i in range(1,100):

if prime(i) and prime(i+2):

print i,i+2

main()

4、 求润年Leapyear(n),输入年份,统计该年就是不就是润年,如果就是润年,返回True;否则返回False 。 def leapyear(n):

if n%4==0 and n%100!=0 or n%400==0:

return True

else:

return False

def main():

n=input("Enter the year:")

print leapyear(n)

main()

5、 计算三角形面积函数,TriangleArea(a,b,c),其中a,b,c 为分别为三角形三条边,面积公式为

)(2

1))()((z y x c z c y c x c c area ++=---=。 def TriangleArea(a,b,c):

C=0、5*(a+b+c)

area=(C*(C-a)*(C-b)*(C-c))**0、5

return area

def main():

a,b,c=input("enter three lengths:")

print TriangleArea(a,b,c)

main()

6、思考题、豆堆

堆里有16颗豆子,有两个玩家(假设一个玩家就是电脑)。每个玩家都可以从堆中的16颗豆子中取出1颗,2颗或者3颗豆子。每个玩家在每回合中必须从堆中取出一定数目的豆子。玩家轮流取出豆子,取到最后一颗豆子的玩家就是输家。

思路:

写一个人取豆子的函数

帮电脑设计一个算法,实现取豆子的函数

在主程序中进行输流调用,谁最后拿到1粒豆子谁就输

import random

def pp(n):

while True:

num=input("Pick some beans, only 1,2 or 3:")

if num<1 or num>3:

print "Wrong, try again、"

continue

return n-num

def cp(n):

if n==4:

return 3

if n==3:

return 2

if n==2:

return 1

else:

i=random、randint(1,3)

return i

def main():

total=16

while True:

ppickrest=pp(total)

cpick=cp(ppickrest)

total=ppickrest-cpick

if ppickrest==1:

print "people win"

break

print "comp=%d, rest=%d"%(cpick,total)

if total==1:

print "computer win"

break

main()

实验八 公式、序列及函数的使用

实验八公式、序列及函数的使用 一、实验目的 1.熟练掌握序列填充及公式复制的方法; 2.掌握常用函数的功能及使用方法,并能用它们来解决一些实际问题。 二、实验内容与操作步骤 在Excel环境下完成以下各操作: (一)序列填充及公式的使用 1.在Excel中创建一个空白工作簿 2.利用Excel提供的数据填充功能,在Sheet1工作表中输入以下数据: ⑴在区域A1:A9中从上到下填入:2,4,6,8,10,12,14,16,18 ⑵在区域B1:B9中从上到下填入:1,2,4,8,16,32,64,128,256 ⑶在区域C1:C12中从上到下填入:JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC ⑷在区域D1:D7中从上到下填入:星期日,星期一,星期二,星期三,星期四,星期五,星期六 3.在Sheet2工作表中,利用公式计算二次函数ax2+bx+c的值,其中a=2,b=3,c=5,x从-3到4变化,每隔0.5取一个函数值。操作方法写出如下: 4.把工作簿以E81.XLS为文件名存入D:\EX8中。 (二)函数的使用 在Excel环境下打开D:\EX8\E82.XLS文件,依次完成以下各操作后按E83.XLS为文件名存入D:\EX8中。 1、统计函数的使用 ⑴单击“统计函数”工作表;

⑵在区域F3:G8中用“统计函数”计算出各分店的统计值。 操作方法是:先在F3单元及G3单元输入的计算公式,然后选定区域F3:G3后双击其填充柄。其中F3单元的公式为,G3单元的公式为。 ⑶在区域B9:E12用“统计函数”计算出各季度的统计值。 2、条件函数的使用 ⑴单击“条件函数”工作表。 ⑵计算出各学生的平均分; ⑶给定各学生的成绩等级,规则如下:平均分≥90为“A”,80≤平均分<90为“B,70≤平均分<80为“C”,60≤平均分<70为“D”,平均分<60为“E”。以此规则在区域F3:F62用IF函数确定各学生的等级。 ⑷用FREQUENCY函数在区域I2:I5中统计出平均分0~59,60~79,80~99,100各分数段的学生人数。 3、文本函数的使用 ⑴单击“文本函数”工作表; ⑵在区域A2:F32给出的数据清单中,编号的前3位为系别信息,101为数学系,102为物理系,103为化学系,据此在区域B3:B32用函数求出每位教师的系别。其中B3单元使用的公式为。 ⑶已知身份证号的第7至第10位数为出生年份,据此在区域F3:F32用函数求出每位教师的出生年份。其中F3单元使用的公式为。 4、日期函数的使用 ⑴单击“日期函数”工作表; ⑵在区域A2:F32给出的数据清单中,在区域E3:E32用日期函数求出每位职工的工龄。其中E3单元使用的公式为。 ⑶在区域F3:F32用日期函数求出每位职工的工作天数(即自参加工作以来已经过的总天数。其中F3单元使用的公式为。 5、财务函数的使用 使用 PMT 函数完成以下有关的操作: ⑴单击“财务函数”工作表; ⑵某企业向银行贷款5 万元,准备4年还清,假定当前年利率为 4 % ,在 B5 单元 计算每个月应向银行偿还贷款的数额,根据条件在 B2 : B4 补充所需内容。其中单元格B5 使用的公式为。 ⑶假定当前年利率为 5 %,为使 5 年后得到 10 万元的存款,在 D5 单元计算现在开

Python常用内置函数总结

Python常用内置函数总结 一、数学相关 1、绝对值:abs(-1) 2、最大最小值:max([1,2,3])、min([1,2,3]) 3、序列长度:len('abc')、len([1,2,3])、len((1,2,3)) 4、取模:divmod(5,2)//(2,1) 5、乘方:pow(2,3,4)//2**3/4 6、浮点数:round(1)//1.0 二、功能相关 1、函数是否可调用:callable(funcname),注意,funcname变量要定义过 2、类型判断:isinstance(x,list/int) 3、比较:cmp('hello','hello') 4、快速生成序列:(x)range([start,] stop[, step]) 三、类型转换 1、int(x) 2、long(x) 3、float(x) 4、complex(x) //复数 5、str(x) 6、list(x) 7、tuple(x) //元组 8、hex(x) 9、oct(x) 10、chr(x)//返回x对应的字符,如chr(65)返回‘A' 11、ord(x)//返回字符对应的ASC码数字编号,如ord('A')返回65 四、字符串处理 1、首字母大写:str.capitalize 复制代码代码如下:

>>> 'hello'.capitalize() 'Hello' 2、字符串替换:str.replace 复制代码代码如下: >>> 'hello'.replace('l','2') 'he22o' 可以传三个参数,第三个参数为替换次数 3、字符串切割:str.split 复制代码代码如下: >>> 'hello'.split('l') ['he', '', 'o'] 可以传二个参数,第二个参数为切割次数 以上三个方法都可以引入String模块,然后用string.xxx的方式进行调用。 五、序列处理函数 1、len:序列长度 2、max:序列中最大值 3、min:最小值 4、filter:过滤序列 复制代码代码如下: >>> filter(lambda x:x%2==0, [1,2,3,4,5,6]) [2, 4, 6] 5、zip:并行遍历 复制代码代码如下:

Python3 常用函数

Python3 常用函数.笔记 Python 3自学.笔记 type()检查变量数据: >>> x = 10 >>> type(x) (cla ss ‘int’) exit( ) 执行到此命令时,程序终止:!!! >>> a = 0 >>> w hile a < 20: a = a + 1 if a == 5: else:#执行到此命令时,程序终止 a = 100 >>> print(a) 5 abs()返回一个数的绝对值: >>> abs(3) 3 >>> abs(-3) 3 while _ _ _ : 循环执行程序: >>> n = 0 >>> w hile n < 3:#(a n d/o r/n o t) n = n + 1 print(n) Continue 继续下一轮循环 Break 退出整个循环 round()对小数进行四舍五入操作: >>> x = 3.1415926 >>> round(x , 2) #保留2位小数

3.14 for _ _ _ in _ _ _ : 可以遍历任何序列的项目(如一个列表或者一个字符串): >>> s = 'a bc def123456' >>> for i in s: print(i) a b c d ...... range( ) 返回一个可迭代对象: >>> range(20) range(0, 20) #默认以0开始 >>> a = 20 >>> for i in ra nge(0 , a , 5): #步长为:5(默认步长为1)print(i) 5 10 15 #计数到20但不包括20 >>> break 退出整个循环: >>> i = 0 >>> w hile i < 10: i = i + 1 if i == 5: Break #执行到此时退出循环结构 >>> print(i) 5 字符串:

Python 实验8 函数1

实验8 函数(一)实验目的: 1、理解自定义函数过程的定义与调用方法; 2、掌握自定义函数的定义与调用方法; 3、理解函数中的参数的作用; 实验内容: 1、编写一函数Fabonacci(n),其中参数n代表第n 次的迭代。While循环 def fib(n): if n==1 or n==2: return 1 a=1 b=1 i=2 while True: c=a+b a=b b=c i+=1 #第i次迭代,也就就是第i个数 if i==n: return c break def main(): n=input("Enter a number of generation:") print fib(n) main() 或者用for循环 def fib(n): a=1 b=1 c=0 if n==1 or n==2: return 1 else: for i in range(3,n+1): c=a+b a=b b=c return c def main(): n=input("enter n:") print fib(n) main() 2、编写一函数Prime(n),对于已知正整数n,判断该数就是否为素数,如果就是素数,返回True,否则返回 False。 def prime(n): if n<2: return False a=0 for i in range(1,n+1): if n%i==0: a+=1 if a>2: return False else: return True def main(): n=input("Enter a number:") print prime(n) main() Or: def prime(n): if n<2: return False if n==2: return True for i in range(2,n): if n%i==0: return False return True def main(): n=input("Enter a number:") print prime(n) main()

最新python常用函数资料

1.map()函数map()是Python 内置的高阶函数,它接收一个函数f和一个list,并通过把函数 f 依次作用在list 的每个元素上,得到一个新的list 并返回。 例如,对于list [1, 2, 3, 4, 5, 6, 7, 8, 9] 如果希望把list的每个元素都作平方,就可以用map()函数: 因此,我们只需要传入函数f(x)=x*x,就可以利用map()函数完成这个计算: def f(x): return x*x print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) 输出结果: [1, 4, 9, 10, 25, 36, 49, 64, 81] 可以用列表替代 注意:map()函数不改变原有的list,而是返回一个新的list。

利用map()函数,可以把一个list 转换为另一个list,只需要传入转换函数。 由于list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的list,事实上它可以处理包含任意类型的list,只要传入的函数f可以处理这种数据类型。 假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list: 输入:['adam', 'LISA', 'barT'] 输出:['Adam', 'Lisa', 'Bart'] format_name(s)函数接收一个字符串,并且要返回格式化后的字符串,利用map()函数,就可以输出新的list。 参考代码: def format_name(s): return s[0].upper() + s[1:].lower() print map(format_name, ['adam', 'LISA', 'barT']) 2.reduce()函数 reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和map()类似,一个函数f,一个list,但行为和map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list 的每个元素反复调用函数f,并返回最终结果值。 例如,编写一个f函数,接收x和y,返回x和y的和: def f(x, y): return x + y 调用reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算:

面向对象实验题及答案(全)

实验1 cin、cout及面向过程的编程实验2 引用与函数重载 实验3 类与对象 实验4 静态成员与对象参数 实验5 拷贝构造函数与内存分配 实验6 对象数组与子对象 实验7 含有数组成员的对象与深拷贝实验8 运算符重载(1) 实验9 运算符重载(2) 实验10 继承与派生 实验11 虚函数与类族 实验12 STL

实验1 cin 、cout 及面向过程的编程 1A :显示某个日期是星期几 (1) 输入、输出要求: 输入:3个正整数,依次为年、月、日,比如2049 10 1 输出:按类似“[2049-10-5] is Friday.”的形式输出 示例: (2) 处理方法 历史上的某一天是星期几?未来的某一天是星期几?关于这个问题,有很多计算公式,其中最著名的是蔡勒(Zeller)公式。即 7)%110)1(26244(-+? ?? ???++-??????+??????+=d m c c y y w 公式中的符号含义: w ——星期几 c ——年份的前两位 y ——年份的后两位 m ——月,3≤m ≤14,某年的1、2月视为上一年的13、14月,比如2003年1月1日要看作2002年的13月1日 d ——日 ??——代表取整,即只要整数部分 %——除法求余数 例如:对于2049年10月1日,计算过程如下: 5 7%547)%284051249(7)%1110)110(2620242044949(==+-++=-+??? ???++?-??????+??????+=w 即2049年10月1日是星期5。如果计算结果是负数,则加7。 1B :格式化输出实数 从键盘读取本金和年利率,求20年中每年末本息合计有多少钱。 输入:用空格分隔的两个数,都可以带小数点 输出:以“钱数(?年后)”的方式显示,以“2格、右对齐”的方式显示年,以“共10格、小数点后取2位、右对齐”的方式显示本息合计的钱数,见示例 示例:本金973.45元、年利率2%的显示结果如下

Python常见数据结构整理

Python常见数据结构整理 2014年10月15日tenking阅读23 次 Python中常见的数据结构可以统称为容器(container)。序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的容器。 一、序列(列表、元组和字符串) 序列中的每个元素都有自己的编号。Python中有6种内建的序列。其中列表和元组是最常见的类型。其他包括字符串、Unicode字符串、buffer对象和xrange对象。下面重点介绍下列表、元组和字符串。 1、列表 列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能。 (1)、创建 通过下面的方式即可创建一个列表: 1 2 3 4list1=['hello','world'] print list1 list2=[1,2,3] print list2 输出: […hello?, …world?] [1, 2, 3] 可以看到,这中创建方式非常类似于javascript中的数组。(2)、list函数

通过list函数(其实list是一种类型而不是函数)对字符串创建列表非常有效: 1 2list3=list("hello") print list3 输出: […h?, …e?, …l?, …l?, …o?] 2、元组 元组与列表一样,也是一种序列,唯一不同的是元组不能被修改(字符串其实也有这种特点)。(1)、创建 1 2 3 4 5 6t1=1,2,3 t2="jeffreyzhao","cnblogs" t3=(1,2,3,4) t4=() t5=(1,) print t1,t2,t3,t4,t5 输出: (1, 2, 3) (…jeffreyzhao?, …cnblogs?) (1, 2, 3, 4) () (1,)从上面我们可以分析得出: a、逗号分隔一些值,元组自动创建完成; b、元组大部分时候是通过圆括号括起来的; c、空元组可以用没有包含内容的圆括号来表示; d、只含一个值的元组,必须加个逗号(,);(2)、tuple函数

实验八 函数含答案

实验八函数 【目的与要求】 1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。 2.了解主调函数和被调函数之间的参数传递方式。 【上机内容】 【一般示例】 【例1】将打印18个"*"组成星形线定义为一个返回值和形参列表都为空的函数,通过主函数调用它。 #include void Star(void) //画星形线。函数没有返回值,形参列表也为空 { int i; for(i=1;i<=18;i++) printf("*"); //18个"*"组成星形线 printf("\n"); return ; //返回值类型为void,return后不带表达式,此句可省略 } int main() { Star( ); //单独的函数调用语句,实参表为空,但必须保留括号 printf("I love C language!\n"); Star( ); return 0; } 【例2】调用prime 函数以每行5个素数的格式输出100到200之间的所有素数。

#include #include int prime(int m) //判断素数函数定义 { int i,k,f=1 ; //函数内定义3个变量 if (m==1) //形参若为1 f=0 ; //形参若为1,非素数 k=(int)sqrt(m); for (i=2; i<=k;i++) if (m%i==0) //m被某除数整除 f=0 ; //则不是素数 return f ; //用return语句返回 } //函数体结束 int main( ) { int i,count=0; for (i=101;i<200;i=i+2) //用i作为循环控制变量,从101开始,步长为2 if (prime(i)) //对每一个i,调用prime函数判断它是否为素数 { printf("%5d",i); //如果是素数,输出该素数i count++ ; //素数个数加1 if (count%5==0 ) //每输出5个素数换一行 printf("\n"); }

大学生c语言程序设计(第四版谭洪强)实验8答案

实验八 函 数(二) 参考答案 /*1.(sy8-1.c ) 请编写函数 fun ,其功能是:计算并输出给定数组(长度为 9)中每相邻两个元素之平均值的平方根之和。 例如,给定数组中的 9 个元素依次为 12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,输出应为:s=35.951014。 【解题思路】 在给出的参考程序中,由于函数要求的返回值为双精度型,所以先将变量 avg 、sum 定义为双精度型,初值为 0.0,然后通过 for 循环分别求出相邻两个元素的平均值放入变量 avg 中,再使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum 中并返回。 【参考答案】*/ double fun(double x[9]) { int i ; double avg=0.0,sum=0.0; //将变量avg 、sum 定义为双精度型,并给其赋初值为0.0 for (i=0;i< 8;i++) { avg=(x[i]+x[i+1])/2; //通过for 循环分别求出相邻两个元素的平均值放入变量avg 中 sum+=sqrt(avg); //使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum } return sum; /*返回计算结果*/ } 2.(sy8-2.c ) 编写函数fun ,实现矩阵(3行3列)的转置(即行列互换)。例如,输入下 面的矩阵:????? ??900800700600500400300200100,程序输出: ???? ? ??900600300800500200700400100。 【解题思路】 方阵转置,只需要将左下半三角元素和右上半三角元素对换即可。 【参考答案】 int fun(int array[3][3]) { int i,j,t ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < i ; j++) {t=array[i][j]; array[i][j]=arrar[j][i]; array[j][i]=t ; } } 3.(sy8-3.c ) 请编写函数 fun ,函数的功能是:统计一行字符串中单词的个数作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。 【解题思路】I am a student! 在给出的参考程序中,若判断出当前字符为非空格,而它前面的字符是空格,则单词数累加 1;若当前字符为非空格,而其前面的字符也为非空格,则单词数不累加 1,程序细节可以参考程序的注释部分。 【参考答案1】 int fun( char s[])

python常用函数年初大总结

1.常用内置函数:(不用import就可以直接使用) help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像函数一样调用 repr(obj) 得到obj的表示字符串,可以利用这个字符串eval重建该对象的一个拷贝 eval_r(str) 表示合法的python表达式,返回这个表达式 dir(obj) 查看obj的name space中可见的name hasattr(obj,name) 查看一个obj的name space中是否有name getattr(obj,name) 得到一个obj的name space中的一个name setattr(obj,name,value) 为一个obj的name space中的一个name指向vale这个object delattr(obj,name) 从obj的name space中删除一个name vars(obj) 返回一个object的name space。用dictionary表示 locals() 返回一个局部name space,用dictionary表示 globals() 返回一个全局name space,用dictionary表示 type(obj) 查看一个obj的类型 isinstance(obj,cls) 查看obj是不是cls的instance issubclass(subcls,supcls) 查看subcls是不是supcls的子类 类型转换函数 chr(i) 把一个ASCII数值,变成字符 ord(i) 把一个字符或者unicode字符,变成ASCII数值 oct(x) 把整数x变成八进制表示的字符串 hex(x) 把整数x变成十六进制表示的字符串

实验十函数应用答案

实验十函数应用 一?实验目的 1.掌握函数的定义和调用; 2.理解形参和实参的使用和传值调用; 3.理解函数声明的使用; 4.掌握函数的嵌套调用; 5.了解函数的嵌套与递归调用,掌握递归函数的编写规律; 6.了解数组元素、数组名作函数参数。 二?实验学时数 2学时 三?实验步骤 (一)阅读程序 1.#include int fun (int x, int y, int z) { z=x * x + y * y; } main() { int a=38; fun(7,3,a); printf("%d",a); 2.#include void fun (int x,int y ); main() {int x=5,y=3; fun(x,y); printf("%d,%d\n",x,y); } void fun (int x,int y ) { x=x+y; y=x-y;

x=x-y; printf("%d,%d\n",x,y); 3.#include int f (int a); main() { int s[ 8 ] = {1,2,3,4,5,6} ,i, d=0; for (i=0; f( s[i] ) ; i++) d+=s[i]; printf("%d\n",d); } int f(int a) { return a%2; } 4.#include long f( int g) { switch(g) { case 0:return 0; case 1: case 2: return 1; } return ( f(g-1)+ f(g-2)); } main ( ) { long int k; k = f(7); printf("\nk= %d\n",k); }

实验8 函数——递归函数

淮海工学院计算机科学系实验报告书 课程名:《C语言程序设计A 》 题目:实验8 函数 ——递归函数 班级:软嵌151 学号:2015123349 姓名:陈正宁

1、实验内容或题目 (1)用递归编写n!的函数,并在main主函数中调用此函数。 (2)有n个大小不同的盘片从大到小放在A柱上,另有B和C两个空柱,要求将这n个盘片从A柱搬到C柱上,在搬动过程中,每次只能搬一个盘片,而且小的不能放在大的之下。编写hanio函数实现搬迁过程。 (3)编写一个程序,求解皇后问题:在n×n的方格棋盘上,放置n个皇后,要求每个皇后不同行、不同列、不同左右对角线。 2、实验目的与要求 (1)要求熟练掌握函数的定义和调用,熟悉函数返回值的使用。 (2)熟悉函数调用的方式和过程。 (3)重点掌握递归函数的使用。 (4)要求实验的第2题采用递归函数编写,盘片的数目在main主函数中输入。提示:函数的参数定义如hanio(n,A,C,B),表示将n个盘片从A柱通过C柱搬到B柱。 (5)要求实验的第3题采用递归函数编写皇后的个数n由用户输入,其值不能超过20;采用整数数组q[N]求解结果,因为每列只能放一个皇后,q[i]的值表示第i个皇后所在的行号,即该皇后放在(q[i],i)的位置上。求解皇后问题的递归模型如下:place(i,n):若i=n,则n个皇后放置完毕,输出解(输出q数组元素) place(k,n):在第k列找一个合适位置i,放置一个皇后(即q[k]=i);place(k+1,n);其中,place(k,n)表示前面的第1,…,k-1个皇后放置好后,现在用于放置k,…,n的皇后。 3、实验步骤与源程序 ⑴实验步骤 ⑵源代码 (1)、 #include long fac(int n) { long f; if(n==0||n==1)

python一些常用方法

1.list方法 一、创建一个列表 只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示: 与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。 二、访问列表中的值 使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符,如下所示: print"list1[0]:",list1[0] print"list2[1:5]:",list2[1:5] 以上实例输出结果: 三、更新列表 你可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项,如下所示: list=['physics','chemistry',1997,2000]; print"Value available at index2:" print list[2]; list[2]=2001; print"New value available at index2:" print list[2];

以上实例输出结果: 四、删除列表元素 可以使用del语句来删除列表的的元素,如下实例: list1=['physics','chemistry',1997,2000]; print list1; del list1[2]; print"After deleting value at index2:" print list1; 以上实例输出结果: 五、Python列表脚本操作符 列表对+和*的操作符与字符串相似。+号用于组合列表,*号用于重复列表。如下所示: Python表达式结果描述 len([1,2,3])3长度 [1,2,3]+[4,5,6][1,2,3,4,5,6]组合 ['Hi!']*4['Hi!','Hi!','Hi!','Hi!']重复 3in[1,2,3]True元素是否存在于列表中 for x in[1,2,3]:print x,123迭代

《C语言程序设计》实验.设计.习题.答案 函数

实验5 函数 姓名:学号:实验日期: 1.实验目的和要求:参见实验指导书实验八 2.实验内容和步骤: 实验内容:实验指导书中的实验八 实验步骤: 2.1.实验内容的第1题,通过本题,了解到要在单步调试时能够观察自定义的函数内部变量变化情况,单步调试如何操作: 1.在“菜单栏”中单击“组建”,然后在弹出的下划栏中选择“开始调试”,然后选择“Step Into”;或者按“F11”。 2.然后开始单步调试,按F10 提问 修改前运行结果画面: (1),请在下面粘贴运行结果画面: #include int a=3,b=5; max(int a,int b) { int c; c=a>b?a:b; return(c); } main() { int a=8; printf("%d\n",max(a,b)); }

实参a是否为同一变量?不是 提问(2),请请在下面粘贴运行结果画面:#include max(int a,int b) { int c; c=a>b?a:b; return(c); } main() { extern int a,b; printf("%d\n",max(a,b)); } int a=3,b=5; 提问(3),观察结果有何变化? #include max(int a,int b) { int c; c=a>b?a:b; return(c); } main() { int a,b; printf("%d\n",max(a,b)); }

int a=3,b=5; 通过本题,可以得出什么结论?若没给未知量赋予初值,那未知量将被随意赋值,赋值一主函数的赋值为先。 2.2 实验内容部分第2题源程序代码,请贴图: 程序运行结果画面,请贴图: 2.3 实验内容部分第3题源程序代码,请贴图:

实验八参考答案

实验8 参考答案 二、实验内容与操作步骤 (二) 函数的使用 1、统计函数的使用 其中F3单元的公式为=SUM(B3:E3) ,G3单元的公式为=A VERAGE(B3:E3)。 2、条件函数的使用 ⑶其中F3单元使用的公式为: =IF(E3>=90,”A”,IF(E3>=80,”B”,IF(E3>=70,”C”,IF(E3>=60,”D”,”E”))))。 然后双击F3单元的填充柄。 ⑷具体的操作步骤及计算公式如下: (1)在区域H2:H4输入统计间距数据59.9,79.9,99.9; (2)选定作为统计结果数据的输出区域:I2:I5; (3)输入频度分析统计函数的公式:=FREQUENCY(E3:E62,H2:H4); (4)按[Ctrl]+[Shift]+[Enter] 3、文本函数的使用 ⑵其中B3单元使用的公式为 =IF(LEFT(A3,3)=”101”,”数学系”,IF(LEFT(A3,3)=”102”,”物理系”,”化学系”))。 ⑶其中F3单元使用的公式为 =MID(E3,7,4) 。 4、日期函数的使用 ⑵其中E3单元使用的公式为 =YEAR(TODAY())-YEAR(D3)+1 。 ⑶其中F3单元使用的公式为 =TODAY()-D3 。 5、财务函数的使用 ⑵其中B5单元使用的公式为 =PMT(B2/12,B3*12,B4)。 ⑶其中E5单元使用的公式为 =PMT(E2/12,E3*12,,E4)。 6、排位函数的使用 ⑵其中G2单元使用的公式为 =F2-$B$10 。 ⑶其中H2单元使用的公式为 =RANK(F2,$F$2:$F$8,1) 或 =RANK(G2,$G$2:$G$8,1) 。 三、思考与练习 1、具体的操作步骤及计算公式如下: (1) 在区域F10:F13输入统计间距数据99,199,299,399; (2) 选定作为统计结果数据的输出区域:G10:G14; (3) 输入频度分析统计函数的公式:=FREQUENCY(C3:C23,F10:F13); (4) 按[Ctrl]+[Shift]+[Enter] 2、操作步骤及计算公式:

Python 常用函数

Python 函数 2016年4月14日 22:07 1、join()函数 以下实例展示了join()的使用方法: #!/usr/bin/python str ="-"; seq =("a","b","c");# 字符串序列 print str.join( seq ); 以上实例输出结果如下: a-b-c 2、str.zfill(width) 将字符串str前面补0使得字符串长度为width 3、lambda函数(匿名函数) a. lambda表达式返回可调用的函数对象.但不会把这个函 数对象赋给一个标识符,而def则会把函数对象赋值给一个变 量. https://www.wendangku.net/doc/2d1635668.html,mbda 它只是一个表达式,而def是一个语句 c.定义一些抽象的,不会别的地方再复用的函数 d. lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒 号右边的返回值 定义了一个lambda表达式,求三个数的和。 用lambda表达式求n的阶乘。 这里也可以把def直接写成lambda形式。如下 lambda函数可以很好和python中内建filter(),map(),reduce()函数的应用程序结合起来,因为它们都带了一个可执行的函数对象. 4、filter(function or None, sequence) -> list, tuple, or string 给定一个'过滤函数'和一个对象的序列,每个序列元素都通过这个过滤器进行筛选,保留函数返回为真的对象.filter函数为已知的序列的每个元素调用给定布尔函数.每个filter返回的非零(true)值元素添加到一个列表中. 1 2 3 #!/usr/bin/python2.5 from random import randint

实验八 参考答案

实验八 函 数(二) 参考答案 1.(sy8-1.c ) 请编写函数 fun ,其功能是:计算并输出给定数组(长度为 9)中每相邻两个元素之平均值的平方根之和。 例如,给定数组中的 9 个元素依次为 1 2.0、34.0、4.0、2 3.0、3 4.0、4 5.0、18.0、3.0、11.0,输出应为:s=35.951014。 【解题思路】 在给出的参考程序中,由于函数要求的返回值为双精度型,所以先将变量 avg 、sum 定义为双精度型,初值为 0.0,然后通过 for 循环分别求出相邻两个元素的平均值放入变量 avg 中,再使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum 中并返回。 【参考答案】 double fun(double x[9]) { int i ; double avg=0.0,sum=0.0; //将变量avg 、sum 定义为双精度型,并给其赋初值为0.0 for (i=0;i< 8;i++) { avg=(x[i]+x[i+1])/2; //通过for 循环分别求出相邻两个元素的平均值放入变量avg 中 sum+=sqrt(avg); //使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum } return sum; /*返回计算结果*/ } 2.(sy8-2.c ) 编写函数fun ,实现矩阵(3行3列)的转置(即行列互换)。例如,输入下 面的矩阵:????? ??900800700600500400300200100,程序输出: ???? ? ??900600300800500200700400100。 【解题思路】 方阵转置,只需要将左下半三角元素和右上半三角元素对换即可。 【参考答案】 int fun(int array[3][3]) { int i,j,t ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < i ; j++) t=array[i][j], array[i][j]=arrar[j][i], array[j][i]=t ; } 3.(sy8-3.c ) 请编写函数 fun ,函数的功能是:统计一行字符串中单词的个数作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。 【解题思路】 在给出的参考程序中,若判断出当前字符为非空格,而它前面的字符是空格,则单词数累加 1;若当前字符为非空格,而其前面的字符也为非空格,则单词数不累加 1,程序细节可以参考程序的注释部分。 【参考答案】 int fun( char s[]) { int i,word=0,num=0;/*word 标志是否是单词,num 用来记录单词数*/ for(i=0;s[i]!=?\0?;i++)

上海九峰实验学校八年级数学下册第四单元《一次函数》检测卷(包含答案解析)

一、选择题 1.甲、乙两车分别从A 地出发匀速行驶到B 地,在整个行驶过程中,甲、乙两车离开A 城的距离(km)y 与甲车行驶的时间(h)t 之间的关系如图所示,则下列结论中正确的个数为( ) ①,A B 两地相距480km ; ②乙车比甲车晚出发1小时,却比甲车早到1小时; ③乙车出发后4小时时追上甲车; ④甲,乙两车相距50km 时, 3.5t =或4.5. A .1 B .2 C .3 D .4 2.若正比例函数y =(m ﹣2)x 的图象经过点A(x 1,y 1)和点B(x 2,y 2),当x 1<x 2时,y 1>y 2,则m 的取值范围是( ) A .m >0 B .m <0 C .m >2 D .m <2 3.已知函数y kx b =+的图象如图所示,则函数y bx k =-的图象大致是( ) A . B . C . D . 4.如图,一次函数y kx b =+(,k b 为常数,且0k ≠)的图像经过点(3,2)-,则关于x 的不等式2kx b +<的解集为( ) A .3x >- B .3x <- C .2x > D .2x < 5.甲,乙两车分别从A , B 两地同时出发,相向而行.乙车出发2h 后休息,当两车相遇时,两车立即按原速度继续向目的地行驶.设甲车行驶的时间为x (h ), 甲,乙两车到B 地

的距离分别为y 1(km ), y 2(km ), y 1, y 2关于x 的函数图象如图.下列结论:①甲车的速度是 45a km /h ;②乙车休息了0.5h ;③两车相距a km 时,甲车行驶了5 3 h .正确的是( ) A .①② B .①③ C .②③ D .①②③ 6.如图,在平面直角坐标系中,点()2,A m 在第一象限,若点A 关于x 轴的对称点B 在直线1y x =-+上,则m 的值为( ) A .-1 B .1 C .2 D .3 7.科学家就蟋蟀鸣叫的次数与室外温度的数量关系做了如下记录: 蟋蟀每分钟鸣叫的次数 温度/°F 144 76 152 78 160 80 168 82 176 84 ) A .178 B .184 C .192 D .200 8.火车匀速通过隧道时,火车在隧道内的长度y (米)与火车行驶时间x (秒)之间的关

实验八 函数(二)

实验八函数(二) 一.实验目的与要求 1.理解函数的嵌套调用和递归调用特点 2.熟悉简单的递归函数设计 3.理解函数参数的普通值传递和地址值传递特点 4.掌握用数组元素和数组名作为函数参数的应用 5.理解变量的作用域和存储属性,掌握局部变量和全局变量、静态变量和动态变量的特 点和应用。 二.实验准备。 1、函数的嵌套调用 C规定,函数不能嵌套定义,但可以嵌套调用。当一个函数调用另一个函数时,前者称为主调函数,后者称为被调函数。不管函数嵌套调用多少次,当被调函数执行结束后返回它的主调函数的调用位置,继续执行主调函数中的其他操作。 2、函数的递归调用 一个函数直接或间接地调用自身称为递归调用。有递归调用语句的函数称为递归函数。C对函数递归自调用的次数没有限制,但每调用一次函数,会在内存的堆栈区分配存储空间用于存放函数的返回位置等相关信息。堆栈的特点是后进先出,所以最后调用的函数最先返回。如果递归自调用的次数过多,可能导致堆栈的溢出。所以,在设计递归函数时,函数体中一般有if~else~这样的语句,用于设置递归结束的条件和继续递归的语句。 3、函数的参数的两种传递方式 (1) 普通值传递的特点: ●只能由实参向形参单向传递,形参的修改不能影响实参 ●形参变量在调用函数时才分配存储空间,调用结束后即释放其存储空间 ●最多只能通过return 语句带回一个返回值 (2) 地址值传递的特点: ●实参是地址常量或变量,形参是能接收实参值的地址变量 ●在被调函数中可以间接使用实参提供的地址空间的数据,相当于“双向”传递。 ●不用return 可以在主调函数中得到多个处理结果 4、数组作为函数参数 (1) 数组元素作为实参:等价于普通变量作为实参,形参为同类型的普通变量,是普通值传递。 (2) 数组名作为实参:传递主调函数中实参数组存储空间的首地址,形参定义为同类型同大小的数组,且形参一维数组可以省略其大小,形参二维数组可以省其第一维大小。是地址值传递。 5、需掌握的教材例题 ●嵌套调用:例7.5 ●递归调用:例7.6、例7.7 ●数组名作函数参数:例7.11、例7.12、例7.13 ●全局变量:例7.14、例7.15 ●静态变量:例7.16、例7.17 三、实验内容(按要求设计以下程序,并调试分析运行结果) 1.(sy8-1.c)请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。例如,给定数组中的9 个元素依次为1 2.0、34.0、4.0、

python中常用的模块的总结

1、模块和包 a.定义: 模块用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py 结尾的python文件。(例如:文件名:test.py,对应的模块名:test) 包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py的文件)b.导入方法 import module_name import module_1的本质:是将module_1解释了一遍 也就是将module_1中的所有代码复制给了module_1 from module_name1 import name 本质是将module_name1中的name变量放到当前程序中运行一遍 所以调用的时候直接print(name)就可以打印出name变量的值 代码例子:自己写的模块,其他程序调用,如下所示: 模块module_1.py代码: 复制代码 1 name = "dean" 2 def say_hello(): 3 print("hello %s" %name) 调用模块的python程序main代码如下:(切记调用模块的时候只需要import模块名不需要加.py) import module_1 #调用变量 print(module_https://www.wendangku.net/doc/2d1635668.html,)

#调用模块中的方法 module_1.say_hello() 复制代码 这样运行main程序后的结果如下: 1 D:\python35\python.exe D:/python培训/s14/day5/module_test/main.py 2 dean 3 hello dean 4 5 Process finished with exit code 0 import module_name1,module_name2 from module_name import *(这种方法不建议使用) from module_name import logger as log(别名的方法) c.导入模块的本质就是把python文件解释一遍 import module_name---->module_name.py---->module_name.py的路径---->sys.path 导入包的本质就是执行该包下面的__init__.py 关于导入包的一个代码例子: 新建一个package_test包,并在该包下面建立一个test1.py的python程序,在package包的同级目录建立一个p_test.py的程序 test1的代码如下: 1 def test(): 2 print("int the test1") package_test包下的__init__.py的代码如下: 1 #import test1 (理论上这样就可以但是在pycharm下测试必须用下面from .import test1) 2 from . import test1 3 print("in the init") p_test的代码如下: 1 import package_test #执行__init__.py 2 package_test.test1.test()

相关文档