Python 有没有一种方法可以这样获取输出?
对于某些x^n,求其数字之和,直到只有一个数字为止。命令行参数的顺序: python3 file.py a b=>python file.py 2 5 输出:2ˆ5=32=3+2=5 我的输出应该如上所示,但当运行下面的代码时,它会给出类似于a=2b=8的输出 它给出: 2^8=256=2+5+6+13=2^8=13=1+3+4 有没有一种方法可以让我的代码像前面一样输出Python 有没有一种方法可以这样获取输出?,python,Python,对于某些x^n,求其数字之和,直到只有一个数字为止。命令行参数的顺序: python3 file.py a b=>python file.py 2 5 输出:2ˆ5=32=3+2=5 我的输出应该如上所示,但当运行下面的代码时,它会给出类似于a=2b=8的输出 它给出: 2^8=256=2+5+6+13=2^8=13=1+3+4 有没有一种方法可以让我的代码像前面一样输出 import sys a = sys.argv[1] b = sys.argv[2] n = (int(a) ** in
import sys
a = sys.argv[1]
b = sys.argv[2]
n = (int(a) ** int(b))
total = 0
if n < 10:
print(f"{str(a)} ^ {str(b)} = {str(n)}")
list1 = [n]
def sum_of_digits():
global total
global n
while n >= 10:
print(f"{str(a)} ^ {str(b)} = {str(n)}", end=' = ')
for m in str(list1[0]):
total += int(m)
print(m, end=" + ")
list1.insert(0, total)
n = total
print(total, end=" = ")
total = 0
return n
导入系统
a=sys.argv[1]
b=sys.argv[2]
n=(整数(a)**整数(b))
总数=0
如果n<10:
印刷体(f“{str(a)}^{str(b)}={str(n)}”)
列表1=[n]
定义数字之和()
全球总数
全球n
当n>=10时:
打印(f“{str(a)}^{str(b)}={str(n)}”,结束='=')
对于str中的m(列表1[0]):
总数+=int(m)
打印(m,end=“+”)
列表1.插入(0,总计)
n=总数
打印(总计,结束=“=”)
总数=0
返回n
递归函数调用a
到b
将上述函数保存在test.py文件中
from test import *
sum_of_digits(2,10)
获取7的输出
import sys
a = sys.argv[1]
b = sys.argv[2]
def sum_of_digits(a, b):
# Use casts as we can't guarantee the input data type
n = int(a)**int(b)
res_list = [str(a), '^', str(b), ' = ', str(n)]
while len([x for x in str(n)]) > 1:
current = [int(x) for x in str(n)]
n = sum(current)
res_list.append(' = ')
res_list.extend(' + '.join(str(x) for x in current))
res_list.append(' = ')
res_list.extend([x for x in str(n)])
print(''.join(res_list))
sum_of_digits(a, b)
试着更清楚地思考你的逻辑。特别是,用简单的英语单词写下您希望程序如何进行的每个步骤,然后对照规范检查代码。这里特别重要的是,您能够解释为什么在print
调用中使用end='='
,并解释您希望这样做的原因,以及在什么情况下这样做是个好主意。尽可能避免全局调用。主程序与其函数之间的首选通信机制是通过输入参数和返回值。试试这个:a=20;b=17;打印(sum([int(c)for c in str(a**b)])
并尝试了解发生了什么。list1
的用途是什么,您是否尝试过调试器或打印语句SOP知道他可以编写a**b
,因此您答案的第一部分完全没有根据。此外,您还有一个自制的整数除法版本,在Python2中它只是n/10
,而在Python3中它是n//10
永远不要调用您的文件test
,总有一天会给您带来很大的麻烦,test可能是一个内置模块或函数或shell命令
from test import *
sum_of_digits(2,10)
import sys
a = sys.argv[1]
b = sys.argv[2]
def sum_of_digits(a, b):
# Use casts as we can't guarantee the input data type
n = int(a)**int(b)
res_list = [str(a), '^', str(b), ' = ', str(n)]
while len([x for x in str(n)]) > 1:
current = [int(x) for x in str(n)]
n = sum(current)
res_list.append(' = ')
res_list.extend(' + '.join(str(x) for x in current))
res_list.append(' = ')
res_list.extend([x for x in str(n)])
print(''.join(res_list))
sum_of_digits(a, b)
>>> sum_of_digits('2', '8')
2^8 = 256 = 2 + 5 + 6 = 13 = 1 + 3 = 4