d_num = []
d_num.append(input("Enter a figure to verify if is a Disarium number: "))
使用上述代码,输入135
和print(d_num)
将返回与“ 1、3、5”相对的“ 135”。
一种快速修复方法是,提示用户在数字之间包含空格或其他字符,然后使用split命令。但是,这会带来问题,因为输出计算基于数字的索引。
例如:
输入:135 输出:true,135 ==蒲公英号为1 ^ 1 + 3 ^ 2 + 5 ^ 3 = 135
尽管有type
,有没有更简单的方法将用户输入转换为列表?
答案 0 :(得分:1)
呼叫list(d_num)
将给您列出组成数字的各个字符的列表。从那里,您可以遍历它们,将它们转换为整数并将其提高为适当的幂:
if int(d_num) == sum((int(d[1])**(d[0] + 1) for d in enumerate(list(d_num)))):
print("%s is a Disarium number" % d_num)
编辑:
正如让·弗朗索瓦·法布尔(Jean-FrançoisFabre)所说,您实际上不需要进行list
调用-您可以直接枚举字符串的字符:
if int(d_num) == sum((int(d[1])**(d[0] + 1) for d in enumerate(d_num))):
print("%s is a Disarium number" % d_num)
答案 1 :(得分:1)
您想知道一种将用户输入的每个数字自动存储为列表项的方法吗?下面是我想到的最简单的方法:
user_input = input("Enter a figure to verify if is a Disarium number: ")
d_num = [digit for digit in user_input]
d_num列表将分别存储每个数字,然后您可以将其转换为整数/浮点数,并执行计算以识别其是否为Disarium数字。
正如@Jérôme在评论中建议的那样,一种更简单的解决方案是将用户输入内容转换为列表,而python处理将单个字符添加为列表项的工作。
d_num = [digit for digit in user_input]
可以写为d_num = list(user_input)
希望有帮助