鱼C论坛

 找回密码
 立即注册
查看: 2551|回复: 4

[已解决]求助一道py题

[复制链接]
发表于 2020-12-15 09:57:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. n=int(input())
  2. a,l=0,[]
  3. while a<n: #输入次数,几个人
  4.     b,c=map(int,input().split())
  5.     a+=1
  6.     for i in range(c): #阶乘求发鞭炮的时间
  7.             l.append(b*i)
  8. k=set(l)    #过滤掉重复时间的个数
  9. print(len(k))
复制代码
最佳答案
2020-12-15 10:22:52
  1. n=int(input('请输入人数'))
  2. a,l=0,[]
  3. while a<n: #输入次数,几个人
  4.     b,c=input('请输入间隔时间和放的鞭炮数并以空格分开').split()
  5.     b=int(b)
  6.     c=int(c)
  7.     a+=1
  8.     for i in range(c): #阶乘求发鞭炮的时间
  9.             l.append(b*i)
  10. k=set(l)    #过滤掉重复时间的个数
  11. print(len(k))
复制代码


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

题目

题目
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-15 09:58:25 | 显示全部楼层
我的做法不知道哪里算法错了,不通过,问问大佬们有什么更好的算法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-15 10:22:52 | 显示全部楼层    本楼为最佳答案   
  1. n=int(input('请输入人数'))
  2. a,l=0,[]
  3. while a<n: #输入次数,几个人
  4.     b,c=input('请输入间隔时间和放的鞭炮数并以空格分开').split()
  5.     b=int(b)
  6.     c=int(c)
  7.     a+=1
  8.     for i in range(c): #阶乘求发鞭炮的时间
  9.             l.append(b*i)
  10. k=set(l)    #过滤掉重复时间的个数
  11. print(len(k))
复制代码


主要就在b,c这里出错了,每次循环都只输入一个人的数据,你map什么,而且就算你map了之后,b和c都是迭代器,而不是整数类型
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-15 11:17:51 | 显示全部楼层
本帖最后由 小伤口 于 2020-12-15 11:35 编辑
  1. #定义函数获取每个小朋友放鞭炮的时间
  2. def one(x,y):
  3.     d=x
  4.     i=0
  5.     a=[]
  6.     while 1:
  7.         if i<y:
  8.             i+=1
  9.             a.append(x)
  10.             x+=d
  11.             
  12.         else:
  13.             return a
  14.             break
  15. #将输入数据放入函数得出的结果存放列表c中
  16. n=int(input(''))
  17. c=[]
  18. while 1:
  19.    
  20.     if n>0:
  21.         temp,guess=input('').split()
  22.         temp=int(temp)
  23.         guess=int(guess)
  24.         one(temp,guess)
  25.         c.append(one(temp,guess))
  26.         n-=1
  27.     else:
  28.         break

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

  31. list1=[]
  32. for i in range(0,d):
  33.     for f in c[i]:
  34.         if f not in list1:
  35.             list1.append(f)
  36.       
  37. print(len(list1))   
  38.    
  39.         

复制代码

我这个比楼主的想法麻烦
楼主参考下就行
你会写的比我好的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢,理解了,没有理解迭代器这个,现在知道了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-30 08:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表