测开之路十三:思维逻辑题

count = 0
for i in range(1,5): # 百位
  for j in range(1,5): # 十位
    for h in range(1,5): # 个位
      if i==j or j==h or i==h:
        continue
      count = count + 1
      print(f'{i}{j}{h}')
print(count)

打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方

或者

for b in range(1,10): # 百位
  for s in range(0,10): # 十位
    for g in range(0, 10): # 个位
      shu = 100*b + 10*s + g
      data = pow(b,3) + pow(s,3) + pow(g,3)
      if shu==data:
        print(shu)

扫描二维码关注公众号,回复: 6050671 查看本文章

求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

 

num = input('输入1~9的数字:')
repeat = int(input('输入要循环的次数:'))
data = []
for i in range(1, repeat+1):
  data.append(i*num)
print(data)

猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少

def day(n):
  if n==1:
    return 1
  return 2*(day(n-1)+1)
print(day(10))

报数
有M个小朋友围成一圈,从1开始报数,报的N的小朋友出圈。
问题:最后剩下的小朋友是几号?

 

m = int(input("几个小朋友:"))
n = int(input("报几出圈:"))
children = [i+1 for i in range(m)] # 把小朋友转成列表
current = 1 # 从1开始报数
while len(children) != 1:
  child = children.pop(0) # 把当前报数的小朋友拿出来
  if current == n : # 如果把的是n,则重新回到1开始报数,且不回队
    current = 1
  else:
    current += 1
  children.append(children.pop(0)) # 如果报的不是n,回到队尾
print(child)

字符串转数字
不要调用int转换函数。按位读取字符串里的字符进行处理将字符串转化为整数,给定的输入一定是合法输入不包含非法字符,字符串头尾没有空格,考虑字符串开头可能有正负号

data = '-1425234534'
mapping = {'0': 0,'1': 1,'2': 2,'3': 3,'4': 4,'5': 5,'6': 6,'7': 7,'8': 8,'9': 9}

# 要实现的函数
def to_int(data):
  total = 0
  # data[::-1]是翻转字符串,使用enumerate获取字符串的索引与值
  for i, v in enumerate(data[::-1]):
    # 排除正好与符号,这里会引起错误,计算出数值后处理字符串。
    if v != '-' and v != '+':
      # mapping[v]是字符对应的数值,pow(10, i)是数字所在位数的权重
      total += mapping[v] * pow(10, i)
  # 如果是负数,这里转成负数
  if data[0] == '-':
    total = -total
  return total
print(to_int(data))
print(type(to_int(data)))

跑马灯
大厅里有100盏灯,每盏灯都编了号码,分别为1-100。每盏灯由一个开关来控制。(开关按一下,灯亮,再按一下灯灭。开关的编号与被控制的灯相同。)开始时,灯是全灭的。现在按照以下规则按动开关。第一次,将所有的灯点亮。第二次,将所有2的倍数的开关按一下。第三次,将所有3的倍数的开关按一下。以此类推。第N次,将所有N的倍数的开关按一下。问第100次按完以后,大厅里还有几盏灯是亮的

 

# True代表灯亮,False代表灯灭
lamp = [False for _ in range(100)]
for n in range(1,101): # n代表第n次按开关
  for i in range(1,101): # i 代表第i盏灯的开关
    if i%n==0: # 如果i是n的倍数,则i代表的灯转换状态
      lamp[i-1] = not lamp[i-1]
for i,v in enumerate(lamp):
  if v:
    print(i+1,v)

斐波那契数列,求第n位是多少

def fib(n):
  if n == 0:
    return 0
  if n == 1:
    return 1
  return fib(n-1)+fib(n-2)
print(fib(6))

def fib1(n):
  data = [0,1]
  for i in range(2,n+1):
    data.append(data[i-1]+data[i-2])
  return data[n]
print(fib1(6))

def fib2(n):
  if n==0 or n==1:
    return n
  x,y = 0,1
  for i in range(2, n+1):
    x,y = y,x+y
  return y
print(fib2(6))

猜你喜欢

转载自www.cnblogs.com/zhongyehai/p/10753910.html