xxlxxl 发表于 2020-9-9 10:35:26

题目求助

这个最后的题目怎么才能比较各个sequence的长度啊?

疾风怪盗 发表于 2020-9-9 10:42:19

{:5_99:}没看懂题目。。。。。。。。

疾风怪盗 发表于 2020-9-9 10:52:34

是这样么?
a = []
start = 18
a.append(start)
while start > 1:
    start = int(start / 2) if start % 2 == 0 elseint(start * 3 + 1)
    a.append(start)
print(a)

xxlxxl 发表于 2020-9-9 11:02:39

疾风怪盗 发表于 2020-9-9 10:52
是这样么?

是的是的,但是有没有办法最后输出的不是列表是数字呢

疾风怪盗 发表于 2020-9-9 11:04:04

xxlxxl 发表于 2020-9-9 11:02
是的是的,但是有没有办法最后输出的不是列表是数字呢

啥意思?那你循环列表内元素,逐个打印,不就完了么

xxlxxl 发表于 2020-9-9 11:07:22

疾风怪盗 发表于 2020-9-9 11:04
啥意思?那你循环列表内元素,逐个打印,不就完了么

还有个问题,start不是固定的,start是argv

疾风怪盗 发表于 2020-9-9 11:09:56

xxlxxl 发表于 2020-9-9 11:07
还有个问题,start不是固定的,start是argv

argv代表模块文件名、argv代表传入的第一个命令行参数

argv = [] # real value of type <type 'list'>
详解:argv是sys模块的一个全局变量,也称sys模块的一个属性!argv本身为一个list类型的对象,该对象持有的第1个元素是命令行中传入的模块名、从第2个元素开始(含),每个元素都是在命令行中传入的参数!注意:argv持有的每个元素的类型均为str(字符串)



举个例子
python temp.py a b c d
说明:命令行运行temp.py模块,同时传入4个参数:a、b、c、d

sys.argv == ["temp.py","a","b","c","d"]#sys.argv是持有5个元素的list对象

sys.argv== "temp.py"   #第1个元素为模块名“temp.py”

sys.argv == "a"               #第2个元素为"a"

sys.argv == "b"               #第3个元素为"b"

sys.argv == "c"               #第4个元素为"c"

sys.argv == "d"               #第5个元素为"d"

没这么用过,就看过视频里老师这么用

xxlxxl 发表于 2020-9-9 11:10:23

疾风怪盗 发表于 2020-9-9 11:04
啥意思?那你循环列表内元素,逐个打印,不就完了么

就大致是你那个代码没错,但有个附加条件,比如sys,argv是20,就得把从1到20的所有数字都试一遍,得出20个sequence,然后再比较这20个sequence的长度,最后打印最长的那个

疾风怪盗 发表于 2020-9-9 11:44:10

xxlxxl 发表于 2020-9-9 11:10
就大致是你那个代码没错,但有个附加条件,比如sys,argv是20,就得把从1到20的所有数字都试一遍,得出 ...

import sys

a = []
start = sys.argv
#start = 20
for i in range(1, int(start) + 1):
    temp = {'num': i, 'result': }
    while i > 1:
      i = int(i / 2) if i % 2 == 0 else int(i * 3 + 1)
      temp['result'].append(i)
    temp['len'] = len(temp['result'])
    a.append(temp)

max_len = max( for i in a])
print(f'最长为{max_len}')

for j in a:
    if j['len'] == max_len:
      max_sequence = j['result']
      for k in max_sequence:
            print(k, end=',')
      print()

kogawananari 发表于 2020-9-9 11:55:56

import argparse

xxlxxl 发表于 2020-9-9 17:43:35

疾风怪盗 发表于 2020-9-9 11:44


用这个代码为什么输出的是18的sequence和19的sequence呢?

疾风怪盗 发表于 2020-9-9 17:53:25

xxlxxl 发表于 2020-9-9 17:43
用这个代码为什么输出的是18的sequence和19的sequence呢?

你不是要求最长的么?
最长为21
18,9,28,14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1,
19,58,29,88,44,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1,
18和19都是21位,都是最长的啊

xxlxxl 发表于 2020-9-9 18:58:35

疾风怪盗 发表于 2020-9-9 17:53
你不是要求最长的么?
最长为21
18,9,28,14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1,


嗷对了对了,感谢
页: [1]
查看完整版本: 题目求助