循环和分支学习笔记及练习

练习

基础

读程序,总结程序的功能:

    numbers=1  
    for i in range(0,20):  
        numbers*=2  
    print(numbers)  

求2^20的值

    summation=0
    num=1
    while num<=100:
        if (num%3==0 or num%7==0) and num%21!=0:
            summation += 1
        num+=1
    print(summation)

求1-100中能被3或7整除并且不被21整除的数的个数

编程实现(for和while各写一遍):

  1. 求1到100之间所有数的和、平均值
sum = 0
average = 0
for x in range(1,101):
    sum += x
    average = sum/100
print(sum,average)


x=1
sum1 = 0
average1 = 0
while 0<x<101:
    sum1 += x
    average1 = sum/100
    x += 1
print(sum1,average1)

输出结果:5050 50.5

  1. 计算1-100之间能3整除的数的和
count = 0
for x in range(1,101):
    if x%3==0:
        count += 1
print(count)

sum = 0
for x in range(1,101):
    if x%3==0:
        sum += x
print(sum)


x = 1
count1 = 0
while 0<x<101:
    if x%3==0:
        count1 += 1
    x += 1
print(count1)

x = 1
sum1 = 0
while 0<x<101:
    if x%3==0:
        sum1 += x
    x += 1
print(sum1)

输出结果:33
输出结果:1683
:审题不清,昨天把数看成了个数,所求结果不符题意

  1. 计算1-100之间不能被7整除的数的和
count = 0
for x in range(1,101):
    if x%7:
        count += 1
print(count)

x = 1
count1 = 0
while 0<x<101:
    if x%7:
        count1 += 1
    x += 1
print(count1)

输出结果:86

稍微困难

  1. 有一对兔子,从出生后第3个月起,每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月的兔子总共有多少?
    规律: 第一个月和第二个月的数量都是1 从第三个月开始 n =( n-1) + (n-2)
    1,1,2,3,5,8,13,21...n?
    1 1
    2 1
    3 2 = 1+1
    4 3 = 1+2
    5 5 = 2+3
    6 8 = 3+5
    n 第(n-1)+第(n-2)
    n = n1 + n2
    n==3 n1=1,n2=1 n=n1+n2=2
    n==4 n1 = n2 n2 = n n = n1+n2
import random
n = random.randint(1,30)
def fib(n):
    if n==1 or n==2:
        return 1
    return fib(n-1)+fib(n-2)
print(n,fib(n))

一些输出结果:
10 55
28 317811
14 377

n = 8
pre_1 = 1
pre_2 = 1
current = 0
for x in range(1, n+1):
    if x == 1 or x == 2:
        current = 1
        continue
    current = pre_1 + pre_2
    pre_2 = pre_1
    pre_1 = current
print('第%d个数是%d' % (n, current))

输出结果
第8个数是21

  1. 判断101-200之间有多少个素数,并输出所有素数。判断素数的方法:用一个数分别除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数
count2 = 0
for x in range(101,201):
    k = 0
    for y in range(2,x):
        if x%y==0:
            k += 1
    if k == 0:
        count2 +=1
        print(x)
print(count2)

输出结果:
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199
21

for number in range(101, 201):
    count = 0
    for x in range(2, number):
        if number % x == 0:
            count += 1
            break
    if count == 0:
        print('%d是素数' % number)
  1. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153 = 1^3 + 5^3 + 3^3
start = 100
end = 999
num = 100
while start <= num <= end:
    bit2 = num//100
    bit1 = (num - bit2 * 100)//10
    bit0 = (num - bit2 * 100 - bit1 * 10)
    #print(bit2,bit1,bit0)
    if num == bit2**3 + bit1**3 + bit0**3 :
        print('找到水仙花数了:',num)
    num += 1

输出结果:
找到水仙花数了: 153
找到水仙花数了: 370
找到水仙花数了: 371
找到水仙花数了: 407

for x in range(100, 1000):
    ge_wei = x % 10
    shi_wei = x // 10 % 10
    bai_wei = x // 100
    if x == ge_wei ** 3 + shi_wei ** 3 + bai_wei ** 3:
        print("%d是水仙数" % x)
  1. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的第20个分数
    1 2 1
    2 3 2
    3 5 3
    4 8 5
    分子:上一个分数的分子加分母 分母: 上一个分数的分子
    fz = 2 fm = 1
    fz+fm / fz
m = 2
n = 1
for x in range(1,21):
    b = m + n
    n = m
    m = b
    if x == 20:
        print(m,n)

输出结果:
28657 17711

  1. 给一个正整数,要求:1、求它是几位数 2.逆序打印出各位数字
num = random.randint(1,3245)
str_num=str(num)                   
print("%d是%d位数"%(num,len(str_num)))
print(str_num[::-1])

输出结果:
2216是4位数
6122

笔记

反省:感觉分支循环这块学的不错,但应用起来总有些摸不着头脑的感觉。其它的都还好,尤其是兔子和正整数的求位和逆序输出。反正我想了很久也没想出来如何用循环解决。。。兔子的那个定义了函数,正整数的那个就直接转换成字符串通过调用内置函数对其进行操作。不拘泥于循环结构,解决起来还是挺简单的。看明天老师怎么解决吧!

if 语句

if 条件语句:
    代码块

其它语句

执行过程:先判断条件语句是否为True,如果True就执行代码块,执行完代码块再执行其它语句。 如果是False,直接执行其它语句。

if 条件语句:
    代码块1
else:
    代码块2

其它语句

执行过程:先判断条件语句是否为True,如果为True就执行代码快1,执行完代码快1再执行其它语句。如果为False就执行代码快2,执行完代码快2再执行其它语句。

if-elif-elif-...-else
if 条件语句1:
    代码块1
elif 条件语句2:
    代码块2
elif 条件语句3:
    代码块3
else:
    代码块4

其它语句

执行过程:先判断条件语句1是否为True,如果是True就执行代码块1,执行完代码块1再执行其它语句。如果条件语句1是False,就判断条件语句2是否为Tru;如果是True就执行代码块2,执行完代码块2再执行其它语句;如果条件语句2是False,就判断条件语句3是否为True;如果是True就执行代码块3,执行完代码块3再执行其它语句;如果条件语句3是False,就执行代码块4,执行完代码块4再执行其它语句。
if 语句的嵌套

if 条件语句1:
    if 条件语句2:
        执行语句块1
    else:
        执行语句块2
else:
    执行语句块3

需要重复执行某个过程,就可以使用循环
python中的循环有for循环和while

for循环

for 变量名 in 序列:
    循环体

for:关键字
变量名:和声明变量时的变量名要求是一样的(功能:存储值)
in:关键字(在...里的意思)
序列:容器类型的数据(字符串、列表、字典、元组、集合)
循环体:会重复执行的代码块
执行过程:使用变量去序列中取数据,一个一个的取,取完为止,每取一个值,依次执行循环体。

range函数
xrange是python2.x中的函数,在Python3.x中使用range函数代替了。
range功能是产生指定范围的数字序列。一般用在for循环中,控制循环次数。或产生索引值。
range(n):产生 0~n-1的整数序列
range(m,n):产生 m ~n-1 的整数序列
range(m,n,step):从m开始,每次家step产生下一个数字,直到n前面一个为止

while 循环

while 条件语句:
    循环体

while: 关键字。
条件语句:bool型结果。
循环体:重复执行的代码段。
执行过程:判断条件语句是否为True,如果为True就执行循环体。
执行完循环体后,再判断条件语句是否为True,如果为True就再执行循环体,以此类推,直至条件语句的值为False,循环结束,执行while循环后面的语句。
注意:如果条件语句一直为True,就会造成死循环。所以在循环体中要有让循环体可以结束的操作。
python中没有do-while循环。

for 和 while 的选择
fro循环的循环次数是确定的,while循环的循环次数可以不确定
1.循环次数不确定的时候,选择while循环
2.循环次数确定的时候,优先for循环。
通过循环遍历一个序列中的值,使用for循环

# input()
"""
接收从控制台输入数据的数据(输入的数据以回车结束)
程序中遇到input()函数,程序会阻塞,等待用户输入完成后,
才会接着执行后面的代码
"""

# 使用value去保存从控制台输入的数据
'''
value = input()

print('===')
'''
# 产生随机数
# python中有一个内置模块,可以产生随机数:random
"""
randint(m,n):产生一个随机数(整数)

"""

# 导入random模块
import random
# 产生1-10的随机数
number = random.randint(1,10)
print(number)

break和continue两个关键字都是作用于循环当中,用来结束循环的。

continue:结束当次循环,进入下次循环的判断。如果是for循环,就让变量取下一个值;如果是while循环就去判断while后边的条件语句是否为True.

break:结束整个循环,执行循环后面的语句。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,059评论 0 13
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,076评论 0 2
  • 火车开动,呼啸声传开四野,在空旷的土地上奔跑。 靠窗的我闭着眼准备睡去,却因为一个地名对对面的男孩来了兴致,闭着的...
    东笙子张庭轩阅读 295评论 0 1
  • 尽量找出不被侵犯的“圣地” I:我们需要找出属于自己的时间,即不被打扰不被妨碍的时间,计划不如变化快,我们常常计划...
    Seven707阅读 108评论 0 0
  • 1 我出身于一个教师家庭,妈妈是小学语文老师,爸爸是中学的数学老师,我的两个姑姑也都是老师。 从小我就比同龄的孩子...
    十九栗阅读 2,596评论 8 0