人类的数字是: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。。。。。
外星人数字是:1、2、4、5、6、7、9、10、11、12、14、15、16、17、19、20、21、22、24、25、26、27、29、41、42、44、45、46、47、49。。。。。
求:输入一个外星人的数字,得到对应的人类数字,比如:输入9,得到对应的人类数字7
解题思路:将1-n之间的数字中包含3,8 的数字提取出来,然后用n减去提取完3、8的数字的长度
n=int(input("请输入数据:"))
def sum(n):
striL=[]
for i in range(1,n):
stri=str(i)
if ('3' in stri) or ('8' in stri):
striL.append(stri)
return len(striL)
print(n-sum(n))
data开始索引和结束索引都从零开始计数,判断开始是否为“-”,如果是与结束索引交换,结束索引加一,再判断交换后的是否为“-”,如果是再交换,。。。如果不是,开始索引加一
def print_data(data):
start_index=0
end_index=0
count=len(data)
while count>start_index+end_index:
if data[start_index] == "-":
data[count-end_index-1],data[start_index]=data[start_index],data[count-end_index-1]
end_index+=1
else:
start_index+=1
return data
data=['-','-','+','-','+','+','-','+','+','-','-','+','-']
print(print_data(data))
循环遍历列表,取出一个值,判断目标值-取出的值是否存在于列表中(时间复杂度为o(n))
l=[2,3,5,7,11,15]
target=9
def sum(l,target):
for i in l:
j = target-i
if j in target:
return [i,j]
else:
return []
把字符串分成一半,判断开头和结尾是否一致
str1="bccb"
def str_mym(str1):
n=int(len(str1)/2)
for i in range(n):
if str1[i] != str1[len(str1)-1-i]:
return False
else:
return True
print(str_mym(str1))
循环表里列表,比较两个数的值,将比较大的放到左边,循环遍历一遍之后,最大的被但放到了最后,再进行循环。。
l=[1,5,8,4,5,9,7,3]
def sort_l(l):
for i in range(len(l)-1):
for j in range(len(l)-i-1):
if l[j]>l[j+1]:
l[j],l[j+1]=l[j+1],l[j]
return l
print(sort_l(l))
1+1=2,1+2=3,2+3=5.。。。输入最大值,将最大值和倒数第二个相加,再将倒数第二个和倒数第三的相加。。。以此类推,直到加到倒数第一个返回1
n=8
def fibo(n):
if n <= 1:
return 1
else:
return (fibo(n-1)+fibo(n-2))
print(fibo(n))
map(函数,可迭代数据,可迭代数据【可选】)
l=[1,2,3,4,5,6]
result=map(lambda x:x**2,l)
print([i for i in result if i>10])