第61题
问题:打印unicode字符串“hello world”。
提示:使用u'strings'格式来定义unicode字符串;
解决方案:
1. unicodeString = u"hello world!" 2. print(unicodeString)
略
第62题
问题:python中的解码与编码;
提示:使用encode()与decode()函数进行转换。
1. s = '止于至善' 2. enc = s.encode('utf-8') 3. dec = enc.decode('utf-8') 4. print(enc) 5. print(dec)
略
第63题
问题:编写一个特殊注释来表明Python源代码文件是unicode格式的。
1. # -*- coding: utf-8 -*- 2. #----------------------------------------#
略
第64题
问题:写一个程序来计算1/2+2/3+3/4+......+n/(n+1)。
示例:如果下面的n作为程序的输入:5;
那么,程序的输出应该是:3.55;
提示:使用float()将整数转换为浮点数。
1. n=int(input()) 2. sum=0.0 3. for i in range(1,n+1): 4. sum += float(float(i)/(i+1)) 5. print(sum)
我的答案:
>>> def Sum(n): s=0 for i in range(1,n+1): s+=i/(i+1) return round(s,2) >>> Sum(5) 3.55 >>>
第65题
问题:编写程序计算:当n>0和F(0)=1时,F(n)=F(n-1)+100通过控制台输入一个给定的n (n>0)。
示例:如果下面的n作为程序的输入:5,
那么,程序的输出应该是:500;
提示:我们可以在Python中定义递归函数。
1. def f(n): 2. if n==0: 3. return 0 4. else: 5. return f(n-1)+100 6. n=int(input()) 7. print(f(n))
我的答案:
1. >>> def f(n): 2. return 100+f(n-1) if n else 0 3. 4. >>> f(5) 5. 500
第66题
问题:斐波那契数列的计算公式如下:如果n=0,f(n)=0;如果n=1,f(n)=1;如果n>1,f(n)=f(n-1)+f(n-2);请编写一个程序,在控制台输入给定n的情况下计算f(n)的值。
示例:如果下面的n作为程序的输入:7;
那么,程序的输出应该是:13;
提示:我们可以在Python中定义递归函数。
def f(n): if n == 0: return 0 elif n == 1: return 1 else: return f(n-1)+f(n-2) n=int(input()) print(f(n))
我的答案:
1. >>> def f(n): 2. return f(n-2)+f(n-1) if n>1 else n 3. 4. >>> f(7) 5. 13 6. >>>
第67题
问题:斐波那契数列的计算公式如下:如果n=0,f(n)=0;如果n=1,f(n)=1;如果n>1,f(n)=f(n-1)+f(n-2);请编写一个程序使用列表理解输出逗号分隔的Fibonacci序列,并通过控制台输入给定的n。
示例:如果下面的n作为程序的输入:7;
那么,程序的输出应该是:0,1,1,2,3,5,8,13;
提示:我们可以在Python中定义递归函数。使用列表理解从现有列表生成列表。使用string.join()连接字符串列表。
def f(n): if n == 0: return 0 elif n == 1: return 1 else: return f(n-1)+f(n-2) n=int(input()) values = [str(f(x)) for x in range(0, n+1)] print(",".join(values))
我的答案:
>>> def f(n): global lst lst=[0] t=f(n-2)[0]+f(n-1)[0] if n>1 else n lst.append(t) return (t,lst) >>> f(7) (13, [0, 1, 1, 2, 3, 5, 8, 13]) >>> f(7)[1] [0, 1, 1, 2, 3, 5, 8, 13]
第68题
问题:请使用generator编写一个程序,当n由控制台输入时,以逗号分隔的形式输出0和n之间的偶数;
示例:如果下面的n作为程序的输入10;
那么,程序的输出应该是:0,2,4,6,8,10;
提示:使用yield生成生成器中的下一个值。
def EvenGenerator(n): i=0 while i<=n: if i%2==0: yield i i+=1 n=int(input()) values = [] for i in EvenGenerator(n): values.append(str(i)) print(",".join(values))
我的答案:
1. >>> def EG(n): 2. for i in range(0,n+1,2): 3. yield i 4. 5. 6. >>> [i for i in EG(10)] 7. [0, 2, 4, 6, 8, 10] 8. >>>
第69题
问题:请编写一个生成器程序,以逗号分隔的形式输出0到n之间可以被5和7整除的数字,而n是通过控制台输入的。
示例:如果下面的n作为程序的输入:100;
那么,程序的输出应该是:0,35,70;
提示:使用yield生成生成器中的下一个值。
def NumGenerator(n): for i in range(n+1): if i%5==0 and i%7==0: yield i n=int(input()) values = [] for i in NumGenerator(n): values.append(str(i)) print(",".join(values))
我的答案:
1. >>> def nGen(n): 2. for i in range(n+1): 3. if not i%(5*7): 4. yield i 5. 6. 7. >>> [i for i in nGen(100)] 8. [0, 35, 70] 9. >>>
第70题
问题:请写assert语句来验证列表[2,4,6,8]中的每个数字都是偶数。
提示:使用“断言表达式”进行断言。
1. li = [2,4,6,8] 2. for i in li: 3. assert i%2==0