回顾---(1)

回顾----(1)

好几天没有更博了,谨以此篇练习来回顾前段时间所学习到的一些知识,并且感谢各位码友们的支持和批评指正!

1、 practice 1

题目要求:
0010 1000转换为十进制
0000 2171转换为十进制
0000 5AFB转换为十进制
代码如下:

a = 0b00101000
b = 0o00002171
c = 0x00005AFB
print(int(a), int(b), int(c))

起初写语句的时候写得是a = 00101000,忘记了写数是几进制了,写了两句才想起来,可见知识还是需要时时拿出来温习!
运行结果如下:

40 1145 23291

2、practice 2

题目要求:
a,b=2,4
b=c=5 c-a>b-a的结果是?
a+=3 resault=a+b resault=?
代码如下:

a, b = 2, 4
b = c = 5
d = c-a
e = b-a
print(d, e)
print(c-a > b-a)  # 打印布尔类型的结果
a += 3
resault = a+b
print(resault)

d = c-a

e = b-a

print(d, e)

博主加上这三句主要是想看到自己在刚写出的代码时,手动计算一下该段代码的结果,走一下执行流程,进而与计算机执行结果进行比较,看是否在思考的过程中有偏差。
运行结果如下:

3 3
False
10

3、practice 3

题目要求:
使用if完成,输入天气温度,如果高于30摄氏度,打印太热了,否则打印还行
考察点:

  • 键盘输入input

  • 强制类型转换

  • if-else结构

代码如下:

fact_Tem = int(input("请输入实际温度:"))
if fact_Tem >= 30:
    print("太热了!")
else:
    print('还行,没那么热')

运行结果如下:

请输入实际温度:30
太热了!

请输入实际温度:18
还行,没那么热

4、practice 4

题目要求:
当p为True,q为False时,布尔表达式not(p and not q)的结果是?
代码如下:

p = True
q = False
print(not(p and not q))

运行结果如下:

False

有一点需要注意,python当中的True和False的首字母必须大写!

5、practice 5

题目要求:
使用while循环输出1-50之间偶数的和
代码如下:
方式一:

sum = 0
i = 2
while i <= 50 and i % 2 == 0:
    sum += i
    i += 2
print(sum)

这种方法固然是可以的,但是它并不适用于普遍情况,它只是说从第一个满足条件的偶数开始,然后每次加2即可持续满足条件,最后输出结果。
实际上此处还是想考察一下对***while里面嵌套if判断***的掌握。
方式二:

sum = 0
i = 1
while i <= 50:
    if i % 2 == 0:
        sum += i
    i += 1
print(sum)

运行结果相同,如下:

650

6、补充知识

(1)用for语句也可以求解practice 5,代码如下:

sum = 0
for i in range(1, 51):
    if i % 2 ==0:
        sum += i
print('sum=', sum)
print('完成for循环之后i的值是?', i)

运行结果如下:

sum= 650
完成for循环之后i的值是? 50

如果把sum放到for循环里面,那么还可以实现累加吗?

for i in range(1, 51):
    sum = 0
    if i % 2 ==0:
        sum += i
print('sum=', sum)

运行结果如下:

sum= 50

运行结果显示:不会再实现累加了,每一轮条件判断结束,sum都会归零,就像秒表归零一样,sum最后的结果会是最后一次的i的值。
接着考虑,能否在for循环里面再次声明一个变量,比如声明一个b变量,看看是否可以实现累加?(与上一段代码类似)

sum = 0
for i in range(1, 51):
    b = 0
    b += i
    print('b======>', b)
    if i % 2 == 0:
        sum += i
print('sum=', sum)
print('b======>', b)

运行结果如下:

b======> 1
b======> 2
b======> 3
b======> 4
b======> 5
b======> 6
b======> 7
b======> 8
b======> 9
b======> 10
b======> 11
b======> 12
b======> 13
b======> 14
b======> 15
b======> 16
b======> 17
b======> 18
b======> 19
b======> 20
b======> 21
b======> 22
b======> 23
b======> 24
b======> 25
b======> 26
b======> 27
b======> 28
b======> 29
b======> 30
b======> 31
b======> 32
b======> 33
b======> 34
b======> 35
b======> 36
b======> 37
b======> 38
b======> 39
b======> 40
b======> 41
b======> 42
b======> 43
b======> 44
b======> 45
b======> 46
b======> 47
b======> 48
b======> 49
b======> 50
sum= 650
b======> 50

运行结果显示:在for循环当中的b的值每次都是0加上该次从range当中取到的值。for循环之外的b的值是最后一次的b的值,为50.
这道练习的目的想要说明两个:

- 声明变量的位置:声明在for、while循环的外层,再执行sum+=i,就相当于累加。 如果放在for、while循环的内层,相当于每次循环都会再次执行这个操作,就像上面第二段代码中sum=0,每次操作都会清零 。 假设即使上一步已经算出来sum=100了 再来一次计算都会清零

- python在for、while循环中没有变量的作用域,在for、while循环的外层都可以获取值, 变量声明在循环里面,循环外面都可以在最后取到它的值,只不过声明在内部和外部的作用不同 声明在里面是每次都置零 声明在外面是做累加操作


(2)再补充一下break与continue跳转语句

要求:如果是3的倍数则不进行累加
方式一:

sum = 0
for i in range(10):
    if i % 3 != 0:
        sum += i
print('sum----111=', sum)

运行结果:

sum----111= 27

方式二:

sum = 0
for i in range(10):
# 任务1
    if i % 3 == 0:
        pass  # pass就是先占着位置,不让它出现语法错误的
# 任务2
    sum += i
print('sum----222=', sum)  # 这里相当于是0-9的累加 即使i % 3 == 0也pass了,对排除是三的倍数不起作用

运行结果:

sum----222= 45

我们观察运行结果可以发现:方式一与方式二的运行结果不一样,为什么会出现这样的结果嘞? 因为pass就是先占着位置,不让它出现语法错误的,即使满足条件做完任务一还是会进行任务二,就相当于是将1-9累加。
而且,我们手动计算一下,发现方式一的结果是正确的。那么如何修正一下方式二的程序让它运行结果变正确嘞?现在要怎么在任务一的pass处填充内容呢?


(1)如果把pass关键字换成break会变成什么样子呢?

sum = 0
for i in range(10):
# 任务1
    if i % 3 == 0:
      break # 跳出整个for循环结构
# 任务2
    sum += i
print('sum----333=', sum)

运行结果如下:

sum----333= 0

因为for i in range(10):取值范围是0-9,0% 3 == 0,满足条件,直接break退出,进而执行print(‘sum----333=’, sum)


(2)如果把pass关键字换成continue会变成什么样子呢?

sum = 0
for i in range(10):
# 任务1
    if i % 3 == 0:
    	continue  # 跳过下方的语句不执行,继续执行下一次的循环
# 任务2
    sum += i
print('sum----444=', sum)

运行结果如下:

sum----444= 27

continue是指:跳过下方的语句不执行,继续执行下一次的循环 (结束本次循环下方的语句)
那么谁是continue下方的语句嘞?它指的是循环体当中的下方的语句不执行,即:任务2 sum += i不执行,直接进行下一次的循环。执行结果无误!

猜你喜欢

转载自blog.csdn.net/qq_42822743/article/details/116196656