第5天:列表作业
必做题
-
已知一个列表
names = ['鲁班七号', '后裔', '狄仁杰', '黄忠', '孙尚香']
,编写程序用两种方法获取names
中的元素黄忠
。print(names[3]) #或者 print(names[-2]) #或者 value=names.pop(names.index("黄忠")) print(value) #或者 if '黄忠' in names: print('黄忠') else: print('黄忠不存在')
-
已知一个数字列表,输出所有元素中,值为奇数的元素。
list1=[0,1,2,3,4,5,6,7,8,9] for i in list1: if i%2!=1: print(i)
-
已知一个列表
scores = [90, 89, 67, 98, 75, 87, 54, 88]
,输入两个成绩,一个添加到scores
的最后,另一个插入到scores
的最前面。**例如:**输入的成绩分别是99和98,那么程序运行结束后打印 scores 的值应该是 [98, 90, 89, 67, 98, 75, 87, 54, 88, 99]
scores = [90, 89, 67, 98, 75, 87, 54, 88] scores.append(int(input("请输入插在最后的成绩:"))) scores.insert(0,int(input("请输入插在第一位的成绩:"))) print(scores)
-
已知一个数字列表, 编写程序将列表中所有元素乘以2
**例如:**nums = [1, 2, 5, 9] -> nums = [2, 4, 10, 18]
nums=[1,2,5,9] for i in range(len(nums)): nums[i]=nums[i]*2 print(nums) #或者 nums=[1,2,5,9] new=[] for i in nums: new.append(i*2) nums=new print(nums)
-
有一个数字列表,获取这个列表中的最大值(注意: 不能使用max函数)
list1=[0,1,2,3,4,5,6,7,8,9] j=list1[0] for i in list1: if i > j : j=i print("列表中的最大值是:",j) #或者 list1=[0,1,2,3,4,59,6,7,8,9] list1.sort() print(list1[-1])
-
写出你对今日授课内容中有疑问的地方(或者觉得有困难的知识点)
选做题
-
写⼀一个程序可以不不断的输⼊入数字,直到输⼊入的数字是0打印 结束 后程序结束。
**提示:**break的使用
num = int(input("请输入一个数字:")) while True: if num==0: break else: num = int(input("请重新输入一个数字:")) print("是0就对了!") #或者 num = int(input("请输入一个数字")) while num!=0: print("不是我想要的") num = int(input("请重新输入一个数字:")) print("对了!")
-
已知一个数字列表,获取列表中出现次数最多的元素
**例如:**nums = [1, 2, 3,1, 4, 2, 1 ,3, 7, 3, 3] -> 打印: 3
nums = [1, 2, 3,1, 4, 2, 1 ,3, 7, 3, 3] compare=[] for i in nums: time=nums.count(i) compare.append(time) max1=compare.index(max(compare)) print(nums[max1]) #或者 list1=[0,1,2,2,2,2,3,4,5,6,7,99,8,9] #假设法,记录最大次数 maxCount=0 value = list1[0] for num in list1: #统计每个元素出现的次数 count=list1.count(num) #比较 if count > maxCount: maxCount=count value=num print("最大值:%d" % (value))
挑战题
-
已知一个列表中保存的全是学生的姓名,要求去掉重复的名字
**例如:**names = [‘张三’, ‘李四’, ‘大黄’, ‘张三’] -> names = [‘张三’, ‘李四’, ‘大黄’]
names = ['张三', '李四', '大黄', '张三'] new=[] for i in names: if i not in new: new.append(i) names=new print(names)
-
一张纸的厚度⼤大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的⾼高度(8848.13⽶米)?
提示: break的使用
high=0.08 time=0.0 while True: if high>=8848.13: break else: time+=1 high=0.08*2**time print(time)
-
统计101~200中素数的个数,并且输出所有的素数。(素数⼜又叫质数,就是只能被1和它本身整除
的数)提示: break的使用
time=0 for i in range(101,201): for j in range(2,i): if i%j==0:break else: time+=1 print(i,'是质数') print("一共有%d个素数" % (time)) #或者 resultList=[] for num in range(101,201): flag = True #假设一个素数,寻找推翻假设的条件: # 在2~num-1范围内找到一个数吧num整除 for m in range(2,num): if num % m ==0: #给flag重新赋值 flag = False #只要找到一个数吧num整除,则循环可以提前结束 break if flag: resultList.append(num) print(resultList) print(len(resultList))
-
要求输入员工的薪资,若薪资小于 0 则重新输入。最后打印出录入员工的数量和薪资明细,以及平均薪资。
提示: continue的使用salarySum = 0 salarys = [] for i in range(4): s = input("请输入一共 4 名员工的薪资(按 Q 或 q 中途结束):") if s.upper() == 'Q': print("录入完成,退出") break if float(s) < 0: continue salarys.append(float(s)) salarySum += float(s) else: print("您已经全部录入 4 名员工的薪资") print("录入薪资:", salarys) print("平均薪资{0}:".format(salarySum/4))