鱼C论坛

 找回密码
 立即注册
查看: 1766|回复: 5

下面这道题用python怎么做啊 求具体码

[复制链接]
发表于 2017-11-22 23:44:42 | 显示全部楼层 |阅读模式

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

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

x
如图
49AD03DA-D60A-4306-BBC0-46BC34F4C17D.jpeg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-11-23 02:55:00 | 显示全部楼层
本帖最后由 yjsx86 于 2017-11-23 03:15 编辑

闲来无事,本就是抱着学习的态度来的 所以这单我接了
  1. #/usr/bin/env pathon3
  2. #-*- coding: utf-8 -*-
  3. import random
  4. from functools import reduce


  5. def random_numbers(numbers_limit):
  6.     '获取numbers_limit个随机数'
  7.     L = []
  8.     while True:
  9.         #简单暴力范围直接定在8位 9位 数
  10.         L.append(random.randint(100000000, 9999999999))
  11.         if len(set(L)) == numbers_limit:
  12.             break
  13.     return L



  14. # sum(map(int, str(number)))
  15. # 下面的函数可以用上面的替代,更简洁,可以不定义直接使用
  16. # 用timeit测试上下代码 下面的效率高出一倍————这只是个人习惯

  17. def digits_sum(number):
  18.     '各个位数之和'
  19.     result = 0
  20.     while number != 0:
  21.         result += number % 10
  22.         number //= 10
  23.     return result


  24. def select_number(x, y):
  25.     '相当于自定义的cmp'
  26.     x_digits_sum = digits_sum(x)
  27.     y_digits_sum = digits_sum(y)
  28.     if x_digits_sum == y_digits_sum:
  29.         return x if x > y else y
  30.     else:
  31.         return x if x_digits_sum > y_digits_sum else y


  32. if __name__ == '__main__':
  33.     # n = 10
  34.     # L = random_numbers(n)

  35.     # 下面是对条件2的模拟 各位和最大有3个 999 7776 55557 输出应该是55557
  36.     L = [999, 111111111, 7776, 555111, 55557, 888]
  37.     print(reduce(select_number, L))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-23 08:55:07 | 显示全部楼层
本帖最后由 jerryxjr1220 于 2017-11-23 09:09 编辑
yjsx86 发表于 2017-11-23 02:55
闲来无事,本就是抱着学习的态度来的 所以这单我接了

  1. def getmax(numbers):
  2.         maxi = numbers[0]
  3.         for n in numbers[1:]:
  4.                 maxi = n if sum(int(e) for e in str(n))>sum(int(i) for i in str(maxi)) else maxi
  5.                 maxi = n if sum(int(e) for e in str(n))==sum(int(i) for i in str(maxi)) and n>maxi else maxi
  6.         return maxi
  7. print(getmax([10000,11111,1234,22222,333]))
复制代码

22222
[Finished in 0.1s]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-23 12:33:29 From FishC Mobile | 显示全部楼层
yjsx86 发表于 2017-11-23 02:55
闲来无事,本就是抱着学习的态度来的 所以这单我接了

可是那n个数不是随机生成的 是自己连续输入的啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-23 12:35:14 From FishC Mobile | 显示全部楼层
就是先输入n后输入 那n和数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-23 15:27:14 | 显示全部楼层
本帖最后由 yjsx86 于 2017-11-23 15:28 编辑
youtianqi 发表于 2017-11-23 12:35
就是先输入n后输入 那n和数


兄弟 你这是学python呢?
  1. if __name__ == '__main__':
  2.     n = int(input('输入想要随机多少个号码: '))
  3.     L = random_numbers(n)
  4.     print('输出样例')
  5.     print(n)
  6.     for x in L:
  7.         print(x,end=' ')
  8.     print('\n输出样例')
  9.     print(reduce(select_number, L))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-26 02:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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