Python基础学习笔记(三)条件选择与循环

条件选择与循环是Python中非常基础也是非常重要的语句结构,本节重点介绍这两个部分:

本节知识大纲:
图片.png

一、条件选择语句

1. if语句
if 判断条件:
    要执行的代码

注意语句结尾有冒号:
下一行有缩进
如果满足条件,则执行代码,如果不满足,则跳过

案例:
(1)在控制台应用程序中输入小雨(语文、数学、英语成绩单科满分100分)判断:
1)如果有一门成绩是100分
2)如果有两门大于90分
3)如果有三门大于80分
满足以上任何一种情况奖励一朵小红花

chinese = int(input("请输入语文成绩:"))
math = int(input("请输入数学成绩:"))
english = int(input("请输入英语成绩:"))
get_course = ""

if (chinese==100 or math == 100 or english == 100):
    if(chinese == 100):get_course+="语文"
    if(math == 100):get_course+="数学"
    if(english == 100):get_course+="英语"
    print("你的%s得了100分,奖励一朵小红花" % get_course)

elif((chinese>=90 and math>=90)or(chinese>=90 and english>=90)or(math>=90 and english>=90)):
    if (chinese >=90): get_course += "语文"
    if (math >=90): get_course += "数学"
    if (english >=90): get_course += "英语"
    print("你的%s得了90分以上,奖励一朵小红花" % get_course)

elif(chinese>=80 and math>=80 and english>=80):
    if (chinese >= 80): get_course += "语文"
    if (math >= 80): get_course += "数学"
    if (english >= 80): get_course += "英语"
    print("你的%s得了80分以上,奖励一朵小红花" % get_course)
else:
    print("没有获得小红花,下次努力哦!")
2. if-else语句

if-else负责两个分支

if 判断条件:
    要执行的代码
else:
    要执行的代码

案例:
(1)让用户输入用户名和密码,如果用户名为admin,密码是123.com,提示登陆成功,否则提示用户名或密码错误

username = input("请输入用户名:")
password = input("请输入密码:")
if username.lower().strip() == "admin" and password == "123.com":
    print("登陆成功!")
else:
    print("用户名或密码错误!")

(2)输入小雨的(语文、数学、英语)成绩(单科成绩满分100分)判断考试成绩,
如果所有科目都及格了,提示:恭喜你,你所有的科目都通过考试了
否则提示:很遗憾,你没有通过(没有及格的科目名称)

chinese_result = int(input("请输入语文成绩:"))
math_result = int(input("请输入数学成绩:"))
english_result = int(input("请输入英语成绩:"))
get_course = ""
if (chinese_result>=60 and math_result>=60 and english_result>=60):
    print("恭喜你,所有的科目都通过考试了!")
else:
    if(chinese_result<60):get_course+="语文"
    if(math_result<60):get_course+="数学"
    if(english_result<60):get_course+="英语"
    print("很遗憾,你没有通过考试,需要补考的科目是%s"%get_course)
3. if-elif语句

当条件判断的分支超过两个,使用if-elif语句

if 判断条件:
    要执行的代码
elif 判断条件:
    要执行的代码
elif 判断条件:
    要执行的代码
……
else:
    要执行的代码

问题:既然有了if……if……if……else,为什么还要有if……elif……elif……else?
答:if……if……if……else是三个分支;而if……elif……elif……else是一个整体
案例:
输入一个月份,判断输入的月份是哪个季节:冬季(12月,1月,2月);春季(3月,4月,5月);夏季(6月,7月,8月)秋季(9月,10月,11月)

month = int(input("请输入月份:"))
if(month == 12 or month == 1 or month == 2):
    print("现在是冬季")
elif(month == 3 or month == 4 or month == 5):
    print("现在是春季")
elif(month == 6 or month == 7 or month == 8):
    print("现在是夏季")
elif(month == 9 or month ==10 or month == 11):
    print("现在是冬季")

二、循环

1. 循环语句三要素
循环语句三要素.png

案例:
(1)输入一个大于1的值,然后算出从1加到这个数之和,
比如:输入6,求出1+2+3+4+5+6

# 循环变量:i=1
# 循环体:循环变量累加,存储在sum
# 循环条件:i<num
num = int(input("请输入数值:"))
i = int(1)
sum = int(0)
while i<=num:
    sum += i
    i += 1
print("从1加到%d的和为:%d"%(num,sum))
2. while语句
while 循环条件:
    循环体

案例:
(1)输入一个正数,求出从1开始到这个数中所有包含3的数自和3的倍数的和;

num = int(input("请输入一个正数:"))
i = 1   #循环变量
sum = 0    #存储累加之后

while i<=num:
    #如果是3的倍数,累加
    if i % 3 == 0:
        sum += i
    #如果包含3的数字,累加
    elif "3" in str(i):
        sum += i
    else:pass
    #循环终止的渐变条件
    i += 1
print("从1到%d中所有包含3的数字的数和所有3的倍数的数的和为:%d"%(num,sum))

(2)输入班级人数,然后依次输入所有学员的成绩,计算该班级成员的平均成绩和总成绩;

"""
循环变量:i=1
循环体:反复输入
循环满足条件:i<=input student number
"""
student_number = int(input("请输入班级学生人数:"))
i = 1   #循环变量
total_result = 0    #所有的成绩之和
while i <= student_number:
    total_result += int(input("请输入第{:d}位,共{:d}为学员成绩:".format(i,student_number)))
    i+=1

print("班级总共有%d名成员,总成绩为%d,平均成绩为%.2f"%(student_number,total_result,total_result/student_number))

(3)键盘输入正数n,求出n与其反序数之和并输出,例如:输入1024,输出应为1024+4201=5225。

# 方法1
num01 = input("请输入一个正数:")
num02 = num01[::-1]
print("该数%d与其反序数%d之和为:%d"%(int(num01),int(num02),int(num01)+int(num02)))
# 方法2
num01 = input("请输入一个正数:")
i = 0   #循环变量
new_num = ""
while i < len(num01):
    new_num = num01[i]+new_num
    i+=1
print("该数%s与其反序数%s之和为%d"%(num01,new_num,int(num01)+int(new_num)))
3. while……else……语句

循环结束后,执行一次else语句,python里面独有的一种结构;

num01 = input("请输入一个正数:")
i = 0   #循环变量
new_num = ""
while i < len(num01):
    new_num = num01[i]+new_num
    i+=1
else:print("循环结束")  #当循环的条件为false时执行的语句
print("该数%s与其反序数%s之和为%d"%(num01,new_num,int(num01)+int(new_num)))
4. break语句

break跳出整个循环,包括else都不执行

#break语句
print("====== break测试 =======")
num = 10
i = 0
while i<= num:
    i+=1
    if i==5:break
    else:
        print(i,end=" ")
else:print("\n=====break测试结束=====")

运行结果:

====== break测试 =======
1 2 3 4 
5. continue语句

continue跳出当次循环,后面的继续执行

# continue语句
print("\n======continue测试=======")
num = 10
i = 0
while i<= num:
    i+=1
    if i==5:continue
    else:
        print(i,end=" ")
else:print("\n=====continue测试结束=====")

运行结果:

======continue测试=======
1 2 3 4 6 7 8 9 10 11 
=====continue测试结束=====

案例
(1)2006年学校8万人,每年增长20%,请问按此增长速度,到哪年学生人数达到20万人

student_number = 8
years = 2006
while True:
    student_number *= 1.25
    years +=1
    if student_number>=20:
        break
print("到%d年学生人数达到20万人"%years)

(2)求1-100间和7(含7的数字,7的倍数)相关的数之和

i = 1
sum = 0
while True:
    if "7" in str(i):
        sum+=i
    elif i%7 == 0:
        sum+=i
    i+=1
    if i>=100:break
print("1-100间和7相关的数之和为%d"%sum)
6. pass语句

pass语句与continue语句的区别:Python中pass语句是空语句,为了保持程序的完整性;continue语句执行后,当前循环后面的语句都不执行了,直接进行下一次循环。

8. for语句

基本结构

for <variable> in <sequence>:
    <statements>
else:
    <statements>

表示范围的四种方法:
(1)方法1:

#使用中括号表示一个List,
#中括号的所有成员都可以从头到尾取到
for i in [1,2,3,4,6,7,8]:
    print(i,end=" ")

(2)方法2:

#range(单个数字)
#表示一个范围取到第一个取不到最后一个
#循环从0开始到这个数字-1结束
for i in range(10):
    print(i,end=" ")

(3)方法3:

#range(两个数字)
#循环从第一个数字开始到第二个数字-1结束,每次递增1
for i in range(2,10):
    print(i,end=" ")

(4)方法4:

#range(三个数字)
#循环从第一个数字开始到第二个数字-1结束,每次递增第三个数字的值
for i in range(2,10,2):
    print(i,end=" ")

案例:
(1)求从1到100之和

sum_of_number = 0   #存储和的值
for i in range(0,101):
    sum_of_number+=i
else:print("==循环结束==")
print(sum_of_number)

(2)求1-100间5和7的倍数之和

for i in range(1,101):
    if i%5==0 or i%7==0:
        sum+=i
print(sum)

(3)水仙花数是个三位数,它的个位数字的三次方加上十位数字的三次方加上百位数字的三次方等于它本身,求一个水仙花数:

# 水仙花数
num_flower = ""
for i in range(100,1000):
    num_ge = i % 10
    num_shi = (i // 10) % 10
    num_bai = i // 100
    if num_ge**3 + num_shi**3 + num_bai**3 == i:
        num_flower+=str(i)+" "
print("水仙花数有:%s"%num_flower)
9. 循环嵌套

案例:
(1)打印乘法口诀表

# 打印乘法口诀表
for i in range(1,10):
    for j in range(1,i+1):
        print("%d*%d=%d\t"%(j,i,i*j),end=" ")
    print()
图片.png

(2)100元买2元的铅笔✏️、5元的文具盒、10元的📂文件夹、15元的彩笔,刚好花完,每样物品至少有一种,一共有多少种组合?打印每一种组合。

count = 0   # 有多少种情况
for i in range(1,51):   # 铅笔最多买50个
    for j in range(1,21):   # 文具盒最多买20个
        for k in range(1,11):   # 文件夹最多买10个
            for l in range(1,7):    # 彩笔最多买6个
                if i * 2 + j * 5 + k * 10 + l * 15 == 100:
                    count += 1
                    print("第%d种情况:可以买%d个铅笔,%d个文具盒,%d个文件夹,%d个彩笔"%(count,i,j,k,l))

(3)打印一个由*组成的等腰三角形,三角形的大小由输入的数字决定;

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