李兮元 发表于 2020-12-15 09:57:26

求助一道py题

n=int(input())
a,l=0,[]
while a<n: #输入次数,几个人
    b,c=map(int,input().split())
    a+=1
    for i in range(c): #阶乘求发鞭炮的时间
            l.append(b*i)
k=set(l)    #过滤掉重复时间的个数
print(len(k))

李兮元 发表于 2020-12-15 09:58:25

我的做法不知道哪里算法错了,不通过,问问大佬们有什么更好的算法

洋洋痒 发表于 2020-12-15 10:22:52

n=int(input('请输入人数'))
a,l=0,[]
while a<n: #输入次数,几个人
    b,c=input('请输入间隔时间和放的鞭炮数并以空格分开').split()
    b=int(b)
    c=int(c)
    a+=1
    for i in range(c): #阶乘求发鞭炮的时间
            l.append(b*i)
k=set(l)    #过滤掉重复时间的个数
print(len(k))


主要就在b,c这里出错了,每次循环都只输入一个人的数据,你map什么,而且就算你map了之后,b和c都是迭代器,而不是整数类型

小伤口 发表于 2020-12-15 11:17:51

本帖最后由 小伤口 于 2020-12-15 11:35 编辑

#定义函数获取每个小朋友放鞭炮的时间
def one(x,y):
    d=x
    i=0
    a=[]
    while 1:
      if i<y:
            i+=1
            a.append(x)
            x+=d
            
      else:
            return a
            break
#将输入数据放入函数得出的结果存放列表c中
n=int(input(''))
c=[]
while 1:
   
    if n>0:
      temp,guess=input('').split()
      temp=int(temp)
      guess=int(guess)
      one(temp,guess)
      c.append(one(temp,guess))
      n-=1
    else:
      break

#通过for循环将重复的过滤掉打印len(list1)
d=len(c)

list1=[]
for i in range(0,d):
    for f in c:
      if f not in list1:
            list1.append(f)
      
print(len(list1))   
   
      


我这个比楼主的想法麻烦
楼主参考下就行
你会写的比我好的{:10_250:}

李兮元 发表于 2020-12-15 12:41:22

洋洋痒 发表于 2020-12-15 10:22
主要就在b,c这里出错了,每次循环都只输入一个人的数据,你map什么,而且就算你map了之后,b和c都是迭 ...

谢谢,理解了,没有理解迭代器这个,现在知道了
页: [1]
查看完整版本: 求助一道py题