1.有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币
a=True
list1=[]
while a:
for i in list1:
if i=="*":
a=False
list1=[]
b=eval(input("请输入硬币数字"))
list1.append(b)
c=0
while e:
list1.pop()
list1.pop()
c+=1
if len(list1)==0:
break
print("最少用了%d次将硬币取完"%(c))
2.如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数"
list1=[]
for i in range(2,101):
for j in range(2,101):
if((i==j)):
continue
else:
if(((i%j)!=0)):
if (j==100):
list1.append(i)
else:
continue
else:
break
print(list1)
m=1
while m<=len(list1)-m:
for n in list1:
if((list1[len(list1)-m]-n)==2):
print("这一组孪生数为",list1[len(list1)-m],n)
else:
continue
m+=1
3.给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和
array = list(map(int,input("输入用空格分隔的数字:").split()))
def bubbleSort(arr):
for i in range(1, len(arr)):
for j in range(0, len(arr)-i):
if arr[j] > arr[j+1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
bubbleSort(array)
print("最小的为%d最大的为%d"%(array[0],array[len(array)-1]))
for i in array:
i+=i
print("列表的和为%d 列表的平均值为%d"%(i,i/len(array)-1))
4.将list中的重复数据去重,至少使用两种方案
a=True
list1=[]
while a:
b=eval(input("请输入列表"))
list1.append(b)
if b==a:
a=False
for i in list1:
list1.remove(j)
for j in list1:
if i==j:
print("重复的列表元素为",i)
list1.remove(i)
else:
list1.insert(list1.index(i),j)
方法2直接将数据类型变为set,集合的本质为Hash表,会去掉重复数据
a=True
list1=[]
while a:
b=eval(input("请输入列表"))
list1.append(b)
if b==a:
a=False
list(set(list1))
5.两个列表进行合并操作
array1 = list(map(int,input("输入用空格分隔的数字:").split()))
array2 = list(map(int,input("输入用空格分隔的数字:").split()))
for i in range(0,len(array2)-1):
array1.append(i)
6.使用列表判断一个列表是否在另外一个列表中
list1 = [1,2,3,4,5]
list2 = [1,2]
print(set(list2).issubset(set(list1)))
print(set(list1).issuperset(set(list2)))
7.列表的反转 列表的排序
array = list(map(int,input("输入用空格分隔的数字:").split()))
a=((len(array)-1))
for i in range(0,(len(array)-1)/2):
array[i] = array[a]
a-=1
冒泡排序
def bubbleSort(arr):
for i in range(1, len(arr)):
for j in range(0, len(arr)-i):
if arr[j] > arr[j+1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
8.如何将0-10随机存入列表中
import numpy as np
list1 = []
list1 = np.random.uniform(1,10,(1,1))
要装numpy的模块包
9.存在一个1~n的连续列表,在其中不小心重复了一个值,请找出这个重复值
方法1:暴力枚举
list1=["ab","bac","cbd","deca","ab"]
for num1 in list1:
list1.remove(num1)
for num2 in list1:
if(num1==num2):
print("相同字符串为%s"%(num1))
else:
continue
方法2:先排序,再遍历
list2=["ab","bac","cbd","deca","ab"]
def quickSort(arr, left=None, right=None):
left = 0 if not isinstance(left,(int, float)) else left
right = len(arr)-1 if not isinstance(right,(int, float)) else right
if left < right:
partitionIndex = partition(arr, left, right)
quickSort(arr, left, partitionIndex-1)
quickSort(arr, partitionIndex+1, right)
return arr
def partition(arr, left, right):
pivot = left
index = pivot+1
i = index
while i <= right:
if arr[i] < arr[pivot]:
swap(arr, i, index)
index+=1
i+=1
swap(arr,pivot,index-1)
return index-1
def swap(arr, i, j):
arr[i], arr[j] = arr[j], arr[i]
quickSort(list2)
for num1 in list2:
list2.remove(num1)
for num2 in list2:
if(num1==num2):
print("相同字符串为%s"%(num1))
else:
continue