【Python3_基础系列_011】Python3-循环语句-for

【Python3_基础系列_011】Python3-循环语句-for一、for循环for循环是最常见的循环语法,python中的for循环语法如下:这里注意,可迭代的数据都可以通过for循环获取,之前介绍python的基本数据类型的时候已经说明了可迭代的对象是包含__iter__方法的对象。还需要注意,常见的for循环不包括后面的else部分。但是python

大家好,欢迎来到IT知识分享网。【Python3_基础系列_011】Python3-循环语句-for"

一、for循环

for循环是最常见的循环语法,python中的for循环语法如下:

for data in iterator:
    statement1
else:
    statement2

这里注意,可迭代的数据都可以通过for循环获取,之前介绍python的基本数据类型的时候已经说明了可迭代的对象是包含__iter__ 方法的对象。还需要注意,常见的for循环不包括后面的else部分。但是python中for语句可以和else语句一起使用。当for循环不是被break打断时,else的语句就会执行!!(谨记)。python中的序列类型(string,list,tuple)都是可迭代的对象。下面通过for循环以此获取序列类型的数据。

1. str 

a = "python"
for x in a:
    print(x)
输出:
p
y
t
h
o
n

2.list

a = "python"
for x in list(a):
    print(x)
输出:
p
y
t
h
o
n

3.tuple

a = "python"
for x in tuple(a):
    print(x)

输出:
p
y
t
h
o
n

4.range(start, stop[, step]) –输出偶数和奇数

偶数

for x in range(2,10,2):
    print(x)

输出:
2
4
6
8

奇数

for x in range(1,10,2):
    print(x)

输出:
1
3
5
7
9

这个例子同时介绍了range函数的用法,range(start, stop[, step]) 三个参数依次是:开始值,结束值(无法取到),步长。类似于序列的切片操作.参考文章:【Python3系列_002】Python3-序列类型与通用方法

二、for循环中的break和continue

break 会终止本层循环
continue 会跳过本层本次循环
break和continue都只作用与本次循环,不会影响外循环

for i in range(5):
    print('iii',i)
    for j in range(5):
        if j == 2:
            continue
        print('kkk',j)
输出:

iii 0
kkk 0
kkk 1
kkk 3
kkk 4
iii 1
kkk 0
kkk 1
kkk 3
kkk 4
iii 2
kkk 0
kkk 1
kkk 3
kkk 4
iii 3
kkk 0
kkk 1
kkk 3
kkk 4
iii 4
kkk 0
kkk 1
kkk 3
kkk 4

break会终止本层循环

for i in range(5):
    print('iii',i)
    for j in range(5):
        if j == 2:
            break
        print('kkk',j)

输出:
iii 0
kkk 0
kkk 1
iii 1
kkk 0
kkk 1
iii 2
kkk 0
kkk 1
iii 3
kkk 0
kkk 1
iii 4
kkk 0
kkk 1

 

 

三、面试题

 1.实现9*9乘法表。

9*9应该是基本的for循环题目,不仅考察了基本的for循环的使用,对于python来说同时考察了print函数的用法。print(value, …, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False).其中end参数是设置打印结尾符号,默认为换行,修改为\t后默认结尾打印空格。

for x in range(1,10):
    for y in range(1,x+1):
        print("{}*{}={}".format(y,x,x*y),end="\t")
    print()

输出:
1*1=1    
1*2=2    2*2=4    
1*3=3    2*3=6    3*3=9    
1*4=4    2*4=8    3*4=12    4*4=16    
1*5=5    2*5=10    3*5=15    4*5=20    5*5=25    
1*6=6    2*6=12    3*6=18    4*6=24    5*6=30    6*6=36    
1*7=7    2*7=14    3*7=21    4*7=28    5*7=35    6*7=42    7*7=49    
1*8=8    2*8=16    3*8=24    4*8=32    5*8=40    6*8=48    7*8=56    8*8=64    
1*9=9    2*9=18    3*9=27    4*9=36    5*9=45    6*9=54    7*9=63    8*9=72    9*9=81    

2.输入字符串判断是否是回文?

方法1:直接使用序列的通用操作:切片。查看反序是否与原文相等。

a='sstss'
print(a[::]==a[::-1])
输出:True

方法2:使用循环比较首尾是否相等。

a='sstss'
for x in range(len(a)):
    if a[x]!=a[-x-1]:
        break
else:
    print("Yes")

输出:Yes

这里比较的关键在于比较的索引是否正确:

s s t s s
0 1 2 3 4
-5 -4 -3 -2 -1

因此正向取的索引与逆向索引的关系是:a[x]=a[-(x+1)]

3.求出如下序列的总和:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

fenzi=2
fenmu=1
result=0
for x in range(20):
    result+=fenzi/fenmu
    fenzi,fenmu=fenmu+fenzi,fenzi
print(result)

输出:32.66026079864164

解释如下:由于是求前20项的和,因此需要求出每一项并相加。因此相加的结果result+=fenzi/fenmu。每一项的关系如下:f(n)fenzi=f(n-1)fenzi+f(n-1)fenmu,f(n)fenmu=f(n-1)fenzi.并且同时改变fenzi,fenmu。

4.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

 

count = 0
for bai in range(1, 5):
    for shi in range(1, 5):
        for ge in range(1, 5):
            if bai == shi or shi == ge or bai == ge:
                continue
            print("{0}{1}{2}".format(bai, shi, ge))
            count += 1
print("总共有:"+str(count)+"")

输出:
123
124
132
134
142
143
213
214
231
234
241
243
312
314
321
324
341
342
412
413
421
423
431
432
总共有:24种

5.有两个列表x 和 y,要求:y中的元素如果在x中也有的话,就把该元素从x中移除,在全部移除之后打印:“移除结束”,和x y

x = [‘a’,’a’,’b’,’c’,1,2,3]
y = [‘a’,’b’,2,3]

方法1:利用集合求差集

x = ['a','a','b','c',1,2,3]
y = ['a','b',2,3]

print(set(x)-set(y))

输出:{1, 'c'}

方法2:for循环,y中的元素如果在x中也有的话,就把该元素从x中移除

x = ['a','a','b','c',1,2,3]
y = ['a','b',2,3]
for i in y:
    while i in x:
        x.remove(i)
        #del x[x.index(i)]
else:
    print('移除结束')
    print(x)
    print(y)

输出:
移除结束
['c', 1]
['a', 'b', 2, 3]

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32800.html

(0)
上一篇 2023-12-01 11:00
下一篇 2023-12-05 07:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信