题目求助
这个最后的题目怎么才能比较各个sequence的长度啊? {:5_99:}没看懂题目。。。。。。。。 是这样么?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)
疾风怪盗 发表于 2020-9-9 10:52
是这样么?
是的是的,但是有没有办法最后输出的不是列表是数字呢 xxlxxl 发表于 2020-9-9 11:02
是的是的,但是有没有办法最后输出的不是列表是数字呢
啥意思?那你循环列表内元素,逐个打印,不就完了么 疾风怪盗 发表于 2020-9-9 11:04
啥意思?那你循环列表内元素,逐个打印,不就完了么
还有个问题,start不是固定的,start是argv 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"
没这么用过,就看过视频里老师这么用 疾风怪盗 发表于 2020-9-9 11:04
啥意思?那你循环列表内元素,逐个打印,不就完了么
就大致是你那个代码没错,但有个附加条件,比如sys,argv是20,就得把从1到20的所有数字都试一遍,得出20个sequence,然后再比较这20个sequence的长度,最后打印最长的那个
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()
import argparse 疾风怪盗 发表于 2020-9-9 11:44
用这个代码为什么输出的是18的sequence和19的sequence呢? 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位,都是最长的啊 疾风怪盗 发表于 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]