006、py43-day06-sky-20210805_2
题目1:实现冒泡排序(不要求提交,面试之前背熟,什么是冒泡排序需要自己了解)
具体需求:利用for循环,完成a=[1,7,4,89,34,2]的排序(小的数字排前面,大的排后面),不能使用sort、sorted等内置函数或方法
编码提示:
1、先写出第一轮比较的代码哦。如在a当中,将最大的一个数据放在列表最后。
2、再写出第二轮比较的代码:在1之后的列表当中,将第二大的数据,放在列表的倒数第二
3、以此类推
4、比对以上所写的代码,有何相同,有何不同之处。再考虑使用外层for来替换
代码如下:
a = [1, 7, 4, 89, 34, 2] temp = [i for i in range(len(a))][::-1] for i in temp: for j in range(0, i): if a[j] > a[j+1]: a[j], a[j+1] = a[j+1], a[j] print(f'第{j+1}次交换后的列表:', a) print(f'==================第{len(a)-i}轮交换后的列表:', a) print('\n****************************最终排序结果:', a)
执行结果如下:
第1次交换后的列表: [1, 7, 4, 89, 34, 2] 第2次交换后的列表: [1, 4, 7, 89, 34, 2] 第3次交换后的列表: [1, 4, 7, 89, 34, 2] 第4次交换后的列表: [1, 4, 7, 34, 89, 2] 第5次交换后的列表: [1, 4, 7, 34, 2, 89] ==================第1轮交换后的列表: [1, 4, 7, 34, 2, 89] 第1次交换后的列表: [1, 4, 7, 34, 2, 89] 第2次交换后的列表: [1, 4, 7, 34, 2, 89] 第3次交换后的列表: [1, 4, 7, 34, 2, 89] 第4次交换后的列表: [1, 4, 7, 2, 34, 89] ==================第2轮交换后的列表: [1, 4, 7, 2, 34, 89] 第1次交换后的列表: [1, 4, 7, 2, 34, 89] 第2次交换后的列表: [1, 4, 7, 2, 34, 89] 第3次交换后的列表: [1, 4, 2, 7, 34, 89] ==================第3轮交换后的列表: [1, 4, 2, 7, 34, 89] 第1次交换后的列表: [1, 4, 2, 7, 34, 89] 第2次交换后的列表: [1, 2, 4, 7, 34, 89] ==================第4轮交换后的列表: [1, 2, 4, 7, 34, 89] 第1次交换后的列表: [1, 2, 4, 7, 34, 89] ==================第5轮交换后的列表: [1, 2, 4, 7, 34, 89] ==================第6轮交换后的列表: [1, 2, 4, 7, 34, 89] ****************************最终排序结果: [1, 2, 4, 7, 34, 89] Process finished with exit code 0
题目2:编写程序实现,
用户从键盘输入一行字符,编写一个程序,统计并输出其中英文字符,数字,空格和其他字符的个数。
提示:遍历字符串,通过字符串方法判断字符类型,然后统计
代码如下:
# 方法一: str_count = 0 digit_count = 0 space_count = 0 others_count = 0 temp = input('请输入一行字符(包含:英文、数字、空格、其他字符):') for item in temp: if item.isdigit(): digit_count += 1 elif item.isalpha(): str_count += 1 elif item.isspace(): space_count += 1 else: others_count += 1 print(f'英文字符包含:{str_count}个') print(f'数字包含:{digit_count}个') print(f'空格包含:{space_count}个') print(f'其他字符包含:{others_count}个')
执行结果如下:
请输入一行字符(包含:英文、数字、空格、其他字符):aaaBBB111222 #$%&%^ 英文字符包含:6个 数字包含:6个 空格包含:3个 其他字符包含:6个 Process finished with exit code 0
题目3:使用print函数和循环结构输出如下由*组成的金字塔(可以尝试根据层数动态输出)
*
* *
* * *
* * * * *
代码如下:
lie = 7 hang = int(lie/2) + 1 for i in range(hang): print(' '*(hang-1-i) + '*'*(2*i + 1))
执行结果如下:
*
***
*****
*******
Process finished with exit code 0