Python3基础知识复习 -- 分支和循环篇

条件分支判断和循环


  1. 分支结构: 缩进决定从属关系

    if-elif条件判断

1)If condition:
	Statement(s)

2)if condition:
	Statement(s)
else:
	Statement(s)

3)if condition1:
	Statement(s)
elif condition2:
	Statement(s)
elif condition3:
	Statement(s)4)if condition1:
	Statement(s)
elif condition2:
	Statement(s)
elif condition3:
	Statement(s)else:
	Statement(s)

条件成立时执行的语句 if condition else 条件不成立时执行的语句

Eg:

score = int(input("Input your score here: "))
level = ( 
'D' if 0 <= score < 60 else
'C' if 60 <= score < 80 else
'B' if 80 <= score < 90 else
'A' if 90 <= score <100 else
'S' if score == 100 else
'please input the score in range 0-100'
)

print(level)

分支结构的嵌套


  1. While 循环:
    While condition:
    	Statement(s)
    

跳出循环:

  • Break – 直接跳出循环体

  • Continue – 还没完我还会回来的, 跳到循环体开头

  • 无论是break还是continue只能作用于一层循环体

    i = 0
    while i <= 10:
        i += 1
        if i % 2 == 0:
            continue
    print(i)
    

在这里插入图片描述

  • else – 跳出循环仅当循环条件为假时
		day = 0

		while day < 7:
		    answer = input("Do you study day day up? ")
		    if answer == "no":
		        print("Come on! you can do it!")
		        break
		    day += 1
		else:
		    print("Congratulation! you keep signing up 7 days!")

  • 嵌套循环 nested loop
	Eg. 乘法表
	i = 1

	while i < 10:
	    j = 1
	    while j <= i:
	        print(j, "x", i, "=", j * i, end='  ')
	        j += 1
	    print()
    	i += 1
  1. For循环
    for in 变量 in 可迭代对象:
    		Statement(s)
    
    

​ 好兄弟: range()

​ Range(start, stop, [step]) (指定跨度)

Eg. 倒序排列:
For i in range(10, 3, -2):
	Print(i)
	Eg: 质数/素数: 大于1自然数, 除了被1和本身整除,不能被替他数整除的数.
	嵌套for循环, else用来打印不满足内层循环的值
	""" 求一个范围内的素数 """

	prime = int(input("Please input a number here, we will list what prime in it: "))

	for i in range(2, prime):
	    for j in range(2, i):
	        if i % j == 0:
	            print(i, "=", j, "*", i // j)
	            break
	    else:
	        print(i, "是素数")

    Eg.求解水仙花数: 如果一个 3 位数等于其各位数字的立方和,153 = 1^3 + 5^3 + 3^3
	for i in range(100, 1000):
	    sum = 0
	    temp = i

	#先得到个位数的3次方,然后底板除得到前两位, 123 // 10 就变成12了,然后12再去求个位3次方,然后底板除得到1,再去求3次方,累加.
	    while temp:
	        sum = sum + (temp % 10) ** 3
	        temp //= 10

	    if sum == i:
	        print(i)

	Eg. 回文数:
	x = int(input("请输入一个正整数:"))

	if x < 0 or (x % 10 == 0 and x != 0):
	    print("不是回文数。")
	else:
	    revertedNumber = 0
	    while x > revertedNumber:
	        revertedNumber = revertedNumber * 10 + x % 10
	        x //= 10

	    if x == revertedNumber or x == revertedNumber // 10:
	        print("是回文数。")
	    else:
	        print("不是回文数。")

注:

难点一:循环应该在什么时候结束?

答:常规的想法是搭配使用求余数运算符(%)和整除运算符(//),将 x 每一位都进行对应的前后翻转,即将 12345 依次变为 54321……但真的有必要吗?我们只需要反转一半即可,因为如果该数字是回文数,那么其后半部分翻转后应该与原始数字的前半部分相同。例如:输入 1221,我们可以将数字后半部分从 21 翻转为 12,并将其与前半部分 12 进行比较,因为二者相同,我们得知数字 1221 是回文。

难点二:如果该数字的位数是奇数,那么反转后的数字位数会比原来的一半多一位。

在这里插入图片描述

所以,if x == revertedNumber or x == revertedNumber // 10才对两种情况(左侧是当 x 的位数是偶数时;右侧是当 x 的位数是奇数时)进行判断。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值