Python语言基础与应用 北京大学 测试章节五

1、以下叙述正确的是(D)。
A.在循环体内使用break语句或continue语句的作用相同。
B.continue语句的作用是结束整个循环的执行。
C.从多层循环嵌套中退出时,可以使用goto语句。
D.只能在循环体内使用break语句。

执行break会结束循环,continue是跳过本次循环。

2、
k=1000
while k>1:
print(k)
k=k/2
上述代码的运行结果包含(10)个数字。
3、
for i in range(3):print(i,end=’,’)
输出:0,1,2,
4、

for i in range(2):
    print(i, end='')
else:
    print(0)

输出:010

for循环后接else,else在循环体正常结束后执行,如果是因为执行break结束,则不执行else

5、

n = 1
while n >= 0:
    print(n)
    n = n - 1
else:
    print(n)

输出:
1
0
-1

6、

n = 1
while n >= 0:
    n = n - 1
    print(n)
else:
    print(n)

输出:
0
-1
-1

7、

lst=[1,3,5,7]
for i in lst:
    print(i)
    if i>=5:
        break
else:
    print('END')

输出:
1
3
5

8、下面代码中输出结果为1,2,3三个数字的有

alist=[0,1,2]
for i in alist:
    print(i+1)
i=3
while i>0:
    i=i-1
    print(3-i)

9、常见的控制流结构有:顺序、条件、循环。
10、

if True or False and False:
    print('yes')
else:
    print('no')

输出:yes

逻辑表达式里,优先级not>and>or.所以False and False得到False,True or False得到True。

——————
编程作业五

打印一定范围内的水仙花数

题目内容:
水仙花数是指一个n位数 (n≥3),它的每个位上的数字的n次幂之和等于它本身。
输入一个正整数max,输出100到max之间的所有水仙花数(包括max)。

输入格式:共一行,为一个正整数。

输出格式:若干行,从小到大输出水仙花数,一行为一个数。

n=input()
for i in range(100,int(n)+1):
    i=str(i)
    sum=0
    for j in range(len(i)):
        a = int(i[j]) ** len(i)
        sum += a
    if sum == int(i):
        print(i)

输入两个字符串,输出两个字符串集合的并集

题目内容:输入两个字符串,输出两个字符串集合的并集。

为保证输出结果一致,请将集合内元素排序之后再输出,
如对于集合aset,可输出sorted(aset)。

输入格式:共两行,每一行为一个字符串

输出格式:共一行,为一个集合

a=input()
b=input()
print(sorted(set(a+b)))

sorted()函数不修改源列表,排序后返回一个副本。
sort()方法排序时修改源列表,无返回。

与7相关的数

题目内容:
如果一个正整数,它能被7整除或者它的十进制表示法中某个位数上的数字为7,则称之为与7相关的数。
现在我们给定一个正整数n(n<1000),求所有小于等于n的与7无关的正整数的平方和。

输入格式:共一行,为一个正整数。

输出格式:共一行,为一个正整数。

a=input()
sum=0
for i in range(1,int(a)+1):
    if i%7!=0 and '7'not in str(i):
        sum+=i**2
print(sum)

打印完数

题目内容:
一个数如果恰好等于它的因子之和,这个数就称为"完数"。
输入一个正整数n(n<1000),输出1到n之间的所有完数(包括n)。

输入格式:共一行,为一个正整数。

输出格式:若干行,从小到大输出完数,一行为一个数。

s=eval(input())
for i in range(5, s):
    n = 1
    sum = 0
    while n < i:
        if i % n == 0:
            sum += n
        n += 1
    if sum == i:
        print(i)

打印一个n层金字塔

题目内容:
打印一个n层(1<n<20)金字塔,金字塔由“+”构成,塔尖是1个“+”,下一层是3个“+”,居中排列,以此类推。
注意:每一行的+号之后均无空格,最后一行没有空格。

输入格式:一个正整数n(1<n<20)

输出格式:一个由+号构成的n层金字塔

s=eval(input())
for i in range(1,s+1):
    print('%s%s'%(' '*(s-i),'+'*(2*i-1)))

回文数判断

题目内容:
给一个5位数,判断它是不是回文数,是则输出yes,不是则输出no。
例如12321是回文数,它的个位与万位相同,十位与千位相同。

输入格式:共一行,为一个5位数。

输出格式:共一行,yes或no。

s=input()
mid=int((len(s)+1)/2)-1
x=0
while mid-x>=0:
    if s[mid-x]!=s[mid+x]:
        print('no')
        break
    x+=1
else:
    print('yes')

列表元素改写

题目内容:
输入一个列表alist,要求列表中的每个元素都为正整数且不超过10;
将列表中的奇数变为它的平方,偶数除以2后打印新的列表(新的列表中所有元素仍都为整数)。

同时为保证输出结果一致,请将集合内元素排序之后再输出。
如对于列表alist,可输出sorted(alist)。

输入格式:共一行,用来输入列表的元素值,以空格隔开。

输出格式:共一行,以列表形式打印输出。

alist=list(map(int,input().split()))
blist=[]
for i in alist:
    if i % 2 == 0:
        blist.append(i//2)
    else:blist.append(i**2)
print(sorted(blist))

打印一定范围内的素数

题目内容:
给定一个大于2的正整数n,打印出小于n(不包括n且n不大于100)的所有素数。
要求将符合条件的输出填入一个列表中,打印的结果为该列表。

输入格式:共一行,为一个大于2的正整数

输出格式:共一行,为一个列表

n=eval(input())
ls=[]
for i in range(2, n ):
    m = int(i ** 0.5)
    j = 2
    while j <= m:
        if i % j == 0:
            break
        j += 1
    if j > m:
        ls.append(i)
print(ls)

筛法:

n=eval(input())
ls=[1]*n
ls[0],ls[1]=0,0
for i in range(int(n**0.5)+1):
    if ls[i]==1:
        ls[i*i::i]=[0]*len(ls[i*i::i])
print([i for i,j in enumerate(ls) if j==1])

猴子吃桃问题

题目内容:
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第n天(<1<n<11)早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

输入格式:共一行,为一个大于1小于11的正整数。

输出格式:共一行,为一个正整数

d=eval(input())
def monkeypeach(d):
    if d==1:return 1
    d-=1
    sum=(monkeypeach(d)+1)*2
    return sum
print(monkeypeach(d))
发布了70 篇原创文章 · 获赞 15 · 访问量 4313

猜你喜欢

转载自blog.csdn.net/Heart_for_Ling/article/details/103402794
今日推荐