python学习测试题3及参考答案

1.下面的循环会打印多少次"I love Python"

for i in range(0, 10, 2):
    print('I love Python')

range(start, stop[, step])
1.start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
2.stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
3.step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

range()函数用法

2.下面的循环会打印多少次"I love Python"

for i in 5:
    print('I love Python')

上述程序会报错in 是“成员资格运算符”,而不是像 C 语言那样去使用 for 语法。如要循环打印五次应该写成:

for i in range(5):
    print('I love Python')

3.写一个程序,输入一个字符串,判断该字符串中是否存在字符‘p’

在这里插入图片描述
参考程序:

a = input("请输入一个字符串:")
res = False
for s in a:
    if s == 'p':
        res = True
        break

print("存在") if res else print("不存在")

参考程序最后一行代码为python中的三目运算符,相当于C语言中的a?b:c,if后面的语句为判断条件,如果成立就执行if前面的语句,若为假则执行else后面的语句。

python三目运算符

4.请问 range(10) 生成哪些数?range(5,10)呢?
同第一题1题
可以用print(list(range(10)))进行打印,结果为

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(list(range(5,10)))进行打印,结果为

[5, 6, 7, 8, 9]

5.目测以下程序会打印什么?

while True:
    while True:
        break
        print(1)
    print(2)
    break
print(3)

结果为:

2
3

因为 break 只能跳出最内层的一层循环

6.你的觉得以下代码效率方面怎样?有没有办法可以大幅度改进(仍然使用while)?

i = 0
string = 'ILoveFishC.com'
while i < len(string)):
    print(i)
    i += 1

这段代码之所以“效率比较低”是因为每次循环都需要调用一次 len() 函数,该函数每次循环都会重新计算该字符串的长度,但该字符串的长度其实只需要计算一遍就可以了(小甲鱼解释:就像你打游戏打得正HIGH的时候,老妈让你去买盐…你有两种选择,一次买一包,一天去买五次,或者一次性买五包回来,老妈要就直接给她。)

参考答案(将字符串长度计算出来后赋值给一个变量进行保存):

i = 0
string = 'ILoveFishC.com'
length = len(string)
while i < length:
    print(i)
    i += 1  

7.设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内。

参考程序:

count = 3
password = 'FishC.com'

while count:
    passwd = input('请输入密码:')
    if passwd == password:
        print('密码正确,进入程序......')
        break
    elif '*' in passwd:
        print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
        continue
    else:
        print('密码输入错误!您还有', count-1, '次机会!', end=' ')    
    count -= 1

8. 编写一个程序,求 100~999 之间的所有水仙花数。

如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。

参考程序:

for i in range(100, 1000):
    sum = 0
    temp = i
    while temp:
        sum = sum + (temp%10) ** 3
        temp //= 10         # 注意这里要使用地板除哦~
    if sum == i:
        print(i)

//称为地板除,两个整数的除法仍然是整数,它总是会舍去小数部分,返回数字序列中比真正的商小的,最接近的数字。简单来说就是求商

9. 编写一个程序,解决三色球问题

有红、黄、蓝三种颜色的球,其中红球 3 个,黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。

参考程序:

print('red\tyellow\tgreen')
for red in range(0, 4):
    for yellow in range(0, 4):
        for green in range(2, 7):
            if red + yellow + green == 8:
                # 注意,下边不是字符串拼接,因此不用“+”哦~
                print(red, '\t', yellow, '\t', green)

10. 编写一个程序,它将找到所有这些数字,可被7整除,但不是5的倍数,2000年至3200年(包括在内)。得到的数字应按逗号分隔的顺序打印在一行上。

参考程序:

l=[]
for i in range(2000, 3201):
    if (i%7==0) and (i%5!=0):
        l.append(str(i))
 
print (','.join(l))

python列表
python中join函数


版权声明:本文为qq_37648548原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。