hveagle 发表于 2022-11-13 15:11:24

【每周一练】第16期:一年的幸运数和超级幸运数

本帖最后由 hveagle 于 2022-11-22 21:48 编辑

大家好,今天是【每周一练】的第16期

这次的每周一练由我帮助用户 @高山 发帖

(祖传开头)

上一期:第15期

当今现代的题目名称
一年的幸运数和超级幸运数
追本溯源的题目说明
*该题目和年份有关,该说明是2022年(11月13日)
如果五位数2022A可以和一位数A整除,那么一位数A就是2022年的幸运数
如果六位数2022AB可以和两位数AB整除,那么两位数AB就是2022年的超级幸运数
提示:不能除以0,0在任何年都不是幸运数或超级幸运数
要求简单的输出格式
*该题目和年份有关,该输出是2022年(11月13日)的幸运数和超级幸运数


结构复杂的程序代码
*该题目和年份有关,该代码是2022年(11月13日)的幸运数和超级幸运数
**** Hidden Message *****
最佳答案的程序代码

最佳答案1元豪
最佳答案2等待着聪明的Python王者
最佳答案3等待着聪明的Python王者

元豪(第1名,有印章)
**** Hidden Message *****
? ? ?(第2名)
空空如也
? ? ?(第3名)
空空如也

下一期:第17期

抄袭罚5鱼币!

高山 发表于 2022-11-13 16:09:32

本帖最后由 高山 于 2022-11-13 16:23 编辑

做的不错啊,加油

元豪 发表于 2022-11-13 17:04:33

是这样吗?
如:20226 % 6 == 0、202230 % 30 == 0就是超级幸运数了?
那样代码应该就没问题
e = '2022'
u = []
l = []
for i in range(1, 10):
    if int(e + str(i)) % i == 0:
      u.append(i)
for i in range(10, 100):
    if int(e + str(i)) % i == 0:
      l.append(i)
print(u)
print(l)

hveagle 发表于 2022-11-13 18:26:39

元豪 发表于 2022-11-13 17:04
是这样吗?
如:20226 % 6 == 0、202230 % 30 == 0就是超级幸运数了?
那样代码应该就没问题

202203%3 == 0也算超级幸运数(改了一下)

dolly_yos2 发表于 2022-11-13 18:56:43

本帖最后由 dolly_yos2 于 2022-11-14 09:57 编辑

仅作者可见是什么新模式?
from datetime import datetime
year = datetime.now().year
print(
    list(filter(lambda x:year * 10 % x == 0, range(1,10))),
    list(filter(lambda x:year * 100 % x == 0, range(10,100))),
    sep='\n'
)

元豪 发表于 2022-11-13 18:58:35

开一下作者可见吧,你回复我我看不见呀{:10_266:}{:10_266:}

hveagle 发表于 2022-11-13 19:27:46

元豪 发表于 2022-11-13 18:58
开一下作者可见吧,你回复我我看不见呀

能吗

三个晾衣架 发表于 2022-11-13 19:50:50

class Lucky_num:

    lucky_num = []
    super_lucky_num = []

    def __init__(self, year):
      self.year = year

    def is_lucky_num_single_digits(self, num):
      if (self.year*10+num) % num == 0:
            return True
      else:
            return False

    def is_lucky_num_double_digits(self, num):
      if (self.year*100+num) % num == 0:
            return True
      else:
            return False

year = int(input('请输入今年年份:'))
A = Lucky_num(year)
list_single_digits =
list_double_digits =

for each in list_single_digits:
    if A.is_lucky_num_single_digits(each):
      A.lucky_num.append(each)

for each in list_double_digits:
    if A.is_lucky_num_double_digits(each):
      A.super_lucky_num.append(each)

print('今年的幸运数为:%s,\n超级幸运数为:%s' % (A.lucky_num, A.super_lucky_num))

hveagle 发表于 2022-11-13 20:39:23

三个晾衣架 发表于 2022-11-13 19:50
class Lucky_num:

    lucky_num = []


发代码样式,并且代码数太多了

hornwong 发表于 2022-11-14 00:09:11

{:5_108:}

三个晾衣架 发表于 2022-11-14 08:06:18

hveagle 发表于 2022-11-13 20:39
发代码样式,并且代码数太多了

其实我是课后题做完了,想复习的全面一点,就想多用一些知识点,没有专门为了效率

zhangjinxuan 发表于 2022-11-14 08:52:53

本帖最后由 zhangjinxuan 于 2022-11-14 09:03 编辑

t = 2022
ans1 = list()
ans2 = list()
for i in range(1, 10):
    if (t * 10 + i) % i == 0:
      ans1 +=

for i in range(1, 100):
    if (t * 100 + i) % i == 0:
      print(t * 100 + i, i)
      ans2 +=

print(ans1, ans2, sep = '\n')

zhangjinxuan 发表于 2022-11-14 08:57:51

答案代码有这两个问题
lucky_number = [] #不能写lucky_number = super_lucky_number =[] ,不然lucky_number 干啥super_lucky_number也干啥
super_lucky_number = []
for i in range(20221, 20230):
    a = i - 20220
    if i % a == 0:
      lucky_number.append(a)
for j in range(202201, 202300): #不知道你的数据范围是什么,个位的AB也算吗?
    ab = j - 202200
    if j % ab == 0: #此处不应该是a,应该是ab
      super_lucky_number.append(ab)
print(lucky_number)
print(super_lucky_number)

lxping 发表于 2022-11-14 09:16:54

y = input("请输入需要计算幸运数的年份:")
list_one = []
list_two = []

for i in range(1,10):
    if (int(y)*10 + i) % i == 0:
      list_one.append(i)
for j in range(10,100):
    if (int(y)*100 +j) % j == 0:
      list_two.append(j)

print(list_one,list_two,sep="\n")

zhangjinxuan 发表于 2022-11-14 12:17:54

答案代码有问题,详见13#

hveagle 发表于 2022-11-20 18:32:13

zhangjinxuan 发表于 2022-11-14 12:17
答案代码有问题,详见13#

>>> XXII = 成都 = 22
>>> XXII
22
>>> 成都
22
>>> 成都 = 15
>>> 成都
15
>>> XXII
22
>>> #?

zhangjinxuan 发表于 2022-11-20 18:36:46

hveagle 发表于 2022-11-20 18:32


什么意思?我说的是代码有问题{:10_277:}

hveagle 发表于 2022-11-21 07:04:52

zhangjinxuan 发表于 2022-11-14 08:57
答案代码有这两个问题

202201 1
202202 2
202203 3
202204 4
202205 5
202206 6
202208 8
202210 10
202212 12
202215 15
202220 20
202224 24
202225 25
202230 30
202240 40
202250 50
202260 60
202275 75


#只要最后两行

zhangjinxuan 发表于 2022-11-21 07:47:02

hveagle 发表于 2022-11-21 07:04


if j % a == 0:
我不理解,这儿为什么写 a???

hveagle 发表于 2022-11-22 07:18:54

{:7_146:}
页: [1] 2
查看完整版本: 【每周一练】第16期:一年的幸运数和超级幸运数