Python程序复习题(二)
1. 字符串切片(序列访问)
· 规则:左闭右开 [start:end:step],end 取不到。
· 反向切片:step 为负时,start 必须大于 end 才能取到值,且 end 位置的字符不会被包含(如 s[4:0:-1] 取不到索引 0)。
· 取逆序串:s[::-1] 或 s[-1::-1] 最方便。
2. 字符编码转换
· ord(ch) 获取 Unicode 码点,chr(num) 将十进制码点转字符。
3. 三角形面积(合法性检查)
· 条件:任意两边之和大于第三边。
· 海伦公式:s = (a+b+c)/2,面积 = sqrt(s*(s-a)*(s-b)*(s-c))。
· 易错:输入需转为 float,且要全面检查三个不等式。
4. 闰年判断
· 正确逻辑:(year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)。
· 易错:不能只判断 %4==0,需排除世纪年(除非能被400整除)。
5. 水仙花数(三位数)
· 核心:分离百位、十位、个位。
· a = i // 100
· b = (i // 10) % 10 (注意不要写成 i % 10,否则得到个位)
· c = i % 10
· 判断:a**3 + b**3 + c**3 == i(注意幂运算符是 **,不是 *)。
· 代码中的错误:原代码中 b 和 c 都取了 %10,且乘方用了 *3,需纠正。
6. break vs continue
· break:立即终止整个循环,跳出循环体。
· continue:跳过本轮剩余语句,进入下一次循环。
· 示例:for i in range(1,11): if i%3==0: break 输出 1 2;若换成 continue 则输出 1 2 4 5 7 8 10(跳过3的倍数)。
7. 循环嵌套与打印图案
· 外层控制行数,内层控制每行符号个数。
· 注意内层循环范围与行号的关系(如 range(1, m+1) 或 range(1, 6-m+1) 可控制递增/递减)。
8. 随机数模块(random)
· randint(m,n):闭区间 [m,n] 随机整数。
· sample(pop, k):无放回抽取 k 个元素。
· shuffle(s):原地打乱列表。
· seed(n):设定随机种子,保证结果可复现。
9. 函数定义与默认参数
· 定义格式:def 函数名(参数列表):,冒号不可省略,函数体缩进。
· 默认参数:def babble(words, times=1): 调用时可省略 times。
· return 可提前终止函数,可出现在任意位置。