学习Python006

本文最后更新于:2023年3月17日 下午

測試題:

0.Python 的 floor 除法现在使用 “ // ” 实现,那 3.0 // 2.0 您目测会显示什么内容呢?

會顯示1.0,在python2中 /除法運算符會得到整數部分,而Python3 /除法運算符是人類計算的正真除法,但是Python的小夥伴認為計算機計算還是需要只得到大多數語言一樣的除法效果,所以加入了//除法運算;

1.a < b < c 事实上是等于?

實際上等價于:a < b and b < c

2.不使用 IDLE ,你可以轻松说出 5 ** -2 的值吗?

得到 0.04;

幂运算操作符比其左侧的一元操作符优先级高,比其右侧的一元操作符优先级低。

這裡給出運算符的表格:

以下假设变量a为10,变量b为21:

运算符 描述 實例
+ 加 - 两个对象相加 a + b 输出结果 31
- 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -11
* 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 210
/ 除 - x 除以 y b / a 输出结果 2.1
% 取模 - 返回除法的余数 b % a 输出结果 1
** 幂 - 返回x的y次幂 a**b 为10的21次方
// 取整除 - 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0

3.如何简单判断一个数是奇数还是偶数?

使用求余可以简单得到答案:能被 2 整除为偶数,所以 x % 2 == 0 ,否则为奇数。

4.请用最快速度说出答案: not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9

答案是:4

not or and 的优先级是不同的: not > and > or
我们按照优先级给它们加上括号: (not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9) == 0 or 0 or 4 or 6 or 9 == 4
为啥是 4 ?
还记得004作业提到的“短路逻辑”吗? 3 and 4 == 4 ,而 3 or 4 == 3
所以答案是: 4

這裡給出邏輯運算符表格:

Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:

运算符 逻辑表达式 描述 实例
and x and y 布尔”与” - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回 20。
or x or y 布尔”或” - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。 (a or b) 返回 10。
not not x 布尔”非” - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not(a and b) 返回 False

動動手:

0.请写一个程序打印出 0~100 所有的奇数。

1
2
3
4
5
6
7
8
9
10
11
12
# 请写一个程序打印出 0~100 所有的奇数。
i = 0
maxNum = 100
# 定義一個字符串保存所有的奇數
oddStr = ''
while i <= maxNum:
if i % 2 != 0:
oddStr += str(i)
oddStr += ' '
i += 1
print(oddStr)

  1. 我们说过现在的 Python 可以计算很大很大的数据, 是…… 真正的大数据,计算可是要靠刚刚的硬件滴,不妨写一个小代码,让你的计算机为之崩溃?

我們可以使用冪計算來實現,但是別隨便玩啊,電腦崩潰了別找我

1
2
3
print(2 ** 2 ** 32)
# 一般很多机子都会在一会儿之后: Memory Overflow ,内存不够用。
# 设计到幂操作,结果都是惊人滴。

2.爱因斯坦的难题

爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。

题目:请编程求解该阶梯至少有多少阶?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 爱因斯坦的难题

# 爱因斯坦曾出过这样一道有趣的数学题:
# 有一个长阶梯;
# 若每步上2阶,最后剩1阶;
# 若每步上3阶,最后剩2阶;
# 若每步上5阶,最后剩4阶;
# 若每步上6阶,最后剩5阶;
# 只有每步上7阶,最后刚好一阶也不剩。

# 定義一個程序總數範圍
total = input('請輸入一個限定的總階梯數(默認不輸入為200): ')
# 默認不輸入為100
if total == '':
total = '200'

while not total.isdigit():
total = input('您輸入的不是一個整數,請重新輸入: ')
total = int(total)

# 由於只有每步上7阶,最后刚好一阶也不剩。ladderNum移動式7的倍數;先定義一個ladderNum=7
ladderNum = 7
# 定義i=0用作循環使用
i = 0
# 定義 標誌位 flag = True;True表示計算成功,False表示計算失敗
flag = False

while not flag:
# 初始定義為0,在進入while循環后先加1,省得每個if里都寫一遍,優化代碼
i += 1
if (ladderNum % 2 == 1 and ladderNum % 3 == 2
and ladderNum % 5 == 4 and ladderNum % 6 == 5
and ladderNum % 7 == 0):
flag = True
else:
ladderNum = 7 * i
flag = False
if ladderNum > total:
# 在程序限定的total階梯內,未找到符合條件的答案~~break跳出
break
if flag:
print('该阶梯至少有', ladderNum, '阶')
else:
print('在程序限定的', total, '階梯內,未找到符合條件的答案~~')



学习Python006
https://seven3.site/python/学习Python006/
作者
Seven3s
发布于
2017年1月3日
许可协议