以Python 3.x版本为主今天发现一个功能,挺有意思的,题目大概意思如下 输入一个正整数N,比如9 输出格式:9*9*9=729=73+75+77+79+81+83+85+87+89 1、知识点运用 编号 名称 说明 1 for循环 for循环
以Python 3.x版本为主今天发现一个功能,挺有意思的,题目大概意思如下
输入一个正整数N,比如9
输出格式:9*9*9=729=73+75+77+79+81+83+85+87+89
1、知识点运用
编号
名称
说明
1
for循环
for循环的使用,
2
pow
次方函数的使用,math模块,pow(9,3),9的3次方
3
数据转换
int > str,float > str,一个print的%s输出的是字符串,所以需要数据转换,否则会报错
4
列表
列表截取取值
5
随机值
随机模块random,在指定范围获取随机值
random.randint(x,y)
6
格式化输出
'{0}*{1}*{2}={3}={4}'.format('1','2','3','4','5')
- 代码如下
# -*- coding: utf-8 -*-
import math
import random
# 输入:9
# 输出:9*9*9=729=73+75+77+79+81+83+85+87+89
# 关键:确定好相加的第一个值,(9-1)*9+1=8*9+1=72+1=73
# 次方:输入值的3次方,输入9,计算9*9*9-1
# 相加:输入值是9,那么从确定的第一个数开始+2进行9次相加
# 同样的原理,输入8次,那么就8*8*8,相加8次,第一个数就是(8-1)*8+==57
start_value=3
end_value=20
value=random.randint(start_value,end_value)
text=''
add_text=''
value_new=0
for j in range(3):
value_new=math.pow(value,3)
text+=str(value)+'*'
text=text[:-1]+'='+str(int(value_new))+'=' # 最后一个*星号不取值
first_value=(value-1)*value+1
for i in range(value):
text+=str(first_value+i*2)+'+'
add_text+=str(first_value+i*2)+'+'
text= text[:-1]
add_text=add_text[:-1]
print(text)
# 或者如下格式化拼接字符串输出
text_new='{0}*{0}*{0}={1}={2}'.format(value,int(value_new),add_text)
print(text_new)
- 效果
2、追求Python更加简洁写法
write less do more
更简洁的语法糖
v = int(input())l = [str(i) for i in range(v*(v-1)+1,v*(v+1)+1,2)]
print(f'{v}*{v}*{v}={v**3}={"+".join(l)}')