4.Python的控制结构

文章介绍了Python中的控制结构,包括条件控制的if-else语句,以及循环控制的for和while循环。同时,文章提供了若干编程题目,涉及函数的编写,如判断奇偶性、字符串处理和数字检查等。此外,还讲解了列表推导式的概念和使用,以及字典推导式的应用。
摘要由CSDN通过智能技术生成

4.Python的控制结构

4.1 条件控制

1.if-else语句表示?

A.

顺序结构

B.

循环结构

C.

选择结构

D.

递归结构

答案:C

2.

x = range(10)
if x > 5:
    y = x - 5
else:
    y = x

运行以上if…else语句为什么会出错?

A.

没有提前定义y

B.

没有返回值

C.

'>'不能用于range与int之间

D.

没有大于5的x值

答案:C

3.已知n是一个整数,1<=n<=100

  • 请完成函数judge,要求当n是奇数时打印odd,当n为偶数且在闭区间[2,5]之间时打印'The number is between 2 and 5', 当n为偶数且在比区间[6,20]之间时打印'The number is between 6 and 20', 当n为偶数且大于20时打印'The number is greater than 20'。 例如: judge(5) ---> 'odd' judge(6) ---> 'The number is between 6 and 20'

正误判定变量:无

 def judge(n):
    if n % 2==0:
        if n>=2 and n<=5:
            return ('The number is between 2 and 5')
        elif n>=6 and n<=20:
            return('The number is between 6 and 20')   
        elif n>20:
            return('The number is greater than 20')
    else:
        return ('odd')
judge(5)

4.完成函数mask,使得它可以只保留输入字符串后四位字符,并将剩余字符变成井号#。 例如: mask('12345678') ='####5678' mask('a') = 'a'

正误判定变量:无

def mask(string):
    if len(string)<=4:
        return string
    else:
        answer =string.replace(string[:-4],'#'*int(len(string)-4))
        return answer
mask('12345678')

5.本题检测一个由数字组成的字符串是否符合规则,规则是字符串必须以7,8或者9开头,字符串的长度必须是10,符合返回YES,不符合返回NO

  • 请补全该函数。

正误判定变量:无

def check(n):
    PhoneRegx=re.compile(r'^[7-9]\d{9}$')
    if PhoneRegx.match(n): 
        ans ='YES'
    else:
        ans ='NO'
    return ans

4.2 循坏控制

1.如果要计算1+2+3+…+10,程序中空白部分应该填入

sum = 0
__ x in [1,2,3,4,5,6,7,8,9,10]:
    sum = sum + x
print(sum)

A.

while

B.

for

C.

if

D.

elif

答案:B

2.请完成函数solve,使得它可以返回小于输入整数中所有是3或5的倍数的自然数之和。 例如: solve(10) = 23 因为小于10的自然数中,3、5、6、9是3或5的倍数,3 + 5 + 6 + 9 =23

def solve(x):
    sum_1 = 0
    for i in range(x):
        if i % 3 == 0 or i % 5 == 0:
            sum_1 += i
    return sum_1

3.现定义一个函数add_3,使传入的列表a中每个元素加3,将计算结果存放到新的列表a_new中,并返回列表a_new

  • 请通过for 循环结构补全下列代码

正误判定变量:a_new

​
def add_3(a):
    a_new=[]
    for i in a:
       a_new.append(i + 3)
    return a_new

4.【单选】下列关于Python面向对象编程,正确的是?

A.

Python`在类中定义函数的第一个参数为`this

B.

__init__方法可以使定义的实例拥有类模板的属性

C.

如果子类定义了父类中的同名方法,通过子类调用该方法时使用父类的方法

D.

如果一个变量前带有__,可以直接从外部访问

答案:B

5.若k为整型,下面while循环输出结果的个数为:

k=1000
while k>100:
    print k
    k /= 2

A.

9

B.

11

C.

10

D.

8

答案:A

6.【单选】如下代码输出结果是?

L = ["life", "answer", 42, 0]
for item in L:
    if item == 0:
        L[item] = "universe"
    elif item == 42:
        L[1] = "everything"
print (L) 

A.

['universe', 'everything', 42, 0]

B.

['life', 'everything', 42, 0]

C.

['universe', 'answer', 42, 0]

D.

['life', 'answer', 42, 0]

答案:A

7.用While循环求自然数1+2+…+100的结果时,下列程序哪一行会造成结果的错误

i = 1
sum = 0
while i < 100:
    sum += i
    i += 1  

A.

sum = 0

B.

while i < 100:

C.

sum += i

D.

i += 1

8.完成函数countStr,使其能返回输入字符串中字母的数量,空格的数量和数字的数量,将结果按字母数量空格数量数字数量排列在一个列表中。 例如:countStr('str 123')=[3,1,3]

def countStr(string):
    letters = 0
    space = 0
    digit = 0
    i=0
    while i < len(string):
        c = string[i]
        i += 1
        if c.isalpha():
            letters += 1
        if c.isspace():
            space += 1
        if c.isdigit():
            digit += 1
    result = [letters,space,digit]
    return result

9.现定义一个函数sub_2,使传入的变量a每次减2,共减100次,并将每一次计算结果存放到列表list中,并返回列表list

  • 请通过while循环结构补全下列代码

正误判定变量:list

def sub_2(a):
    list=[]
    count=0
    while count<100:
        count=count+1
        a=a-2
        list.append(a)        
    return list  

10.如下代码执行结果正确的是?

HK = 157
while HK > 40:
    HK = HK % 3
print HK

A.

52

B.

17

C.

1

D.

157

答案:C

11.如下代码执行结果正确的是?

Number = [25, 25, 32, 86, 97]
Number_new = []
for n in Number:
    if not n%2:
        Number_new.append(n*2)
    else:
        Number_new.append(n+2)
print Number_new

A.

[27, 27, 64, 172, 99]

B.

[27, 27, 34, 88, 99]

C.

代码错误

D.

[50, 50, 64, 172, 194]

答案:A

12.如下代码执行后的结果是?

hack = [2, 3, 2, 5, 7, 3]
hack_new = []
for n in hack:
    if n not in hack_new:
        hack_new.append(n * 3)
print hack_new

A.

[6, 9, 6, 15, 21, 9]

B.

[2, 3, 2, 5, 7, 3]

C.

[6, 9, 15, 21]

D.

[2, 3, 5, 7]

答案:A

4.3 推导式

1.下列说法正确的是?

A.

集合中可以有重复值

B.

字典推导式中不可以使用if条件语句

C.

列表推导式不可以创建嵌套列表

D.

推导式是一种高效快捷的创建方式

2.下面哪一项是列表推导式?

A.

a = [ {item: item +1} for item in [0, 2, 3, 4, 5, 6] ]

B.

for item in a :  
    print a

C.

a = [1, 23, 4, 5]

D.

c = (lambda x: x +1)(123)

答案:A

3.已知两个列表xy

  • 请完成以下代码得到列表x与列表y数值相减的结果answer。 第一个列表x中每一个值减去第二个列表y的值,第二个列表只有一个值。

例子:

x = [1,2,3]
y = [1]
answer = '''代码'''
answer
[0,1,2]

xy为已知变量,不需要重新定义;且xy的值与例子不同。

answer = [i-y[0] for i in x]

4.请完成vowel函数可以返回输入字符串中元音字母的个数,即a、e、i、o、u的个数。 例如:vowel('abcde') = 2

尽量使用推导式。

def vowel(word):
    count = sum([1 for i in word if i in ('aeiou')])
    return count

5.请完成函数friend,在你输入的朋友列表中,只有由五个字母组成的字符串是你的朋友,函数要返回内部元素都是朋友的列表。 例如: friend(['Mary','Barry','Chris','Joel']) = ['Barry','Chris']

尽量用推导式。

def friend(x):
    answer = [name for name in x if len(name) == 5]
    return answer

6.请完成函数var,使其能够计算输入数据的方差,输入数据储存在一个列表中。 例如:var([1,2,3,4,5])=2.0

尽量使用推导式

def var(data):
    print(data)
    mean=float(sum(data))/len(data)
    var=sum([(mean-i)**2 for i in  data])/len(data)
    return var

7.列表[1,2,3]可由下列哪种方式得到

A.

[1,2]+[3]

B.

[1,2]+3

C.

[i+1 for i in range(3)]

D.

[2*i for i in range(3)]

答案:AC

8.请使用字典推导式将population列表转成字典数据结构。即,国家为键,人口数量为值。

population = [('Austrialia',20264082),('China',1313973713),('Denmark',5450661),('France',60876136),('Indonesia',245452739),('Iceland',299388),('Italy',58133509)]
dict_result ={key:value for key,value in population}

9.现在有两个列表,一个是模型的列表m,另一个是其评价指标的列表s

请使用字典推导式快速创建模型:评价指标一一对应的字典,将结果存为model_evaluate

正误判定变量:model_evaluate

m= ['decision trees', 'svm', 'random forest', 'neural network']
s = [0.92, 0.94, 0.97, 0.96]
model_evaluate ={m:s for m,s in zip(m,s)}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值