重做一篇python题目。
常常会怀疑自己是否有能力,去完成对自己的要求,但每次都不敢再想下去,总会害怕万一真的实现不了,会怎么样?应该也会像以前一样,在某个晚上,心酸的和自己和解,跟自己说,都会过去。
其实心里也知道,不会怎么样,总会如此,生活还在进行。以前会跟自己说,再努力一点就好,这件事没做好就是因为不够用心,要比别人多付出,最后把自己搞得一团糟。
现在我心中仍有很多目标待实现,但不想再让欲望驱动自己前行。以后的我去上课,只是因为追求并仰望知识,学习acm,只是因为算法的巧妙和智慧,不要让一切变成一纸分数,一张排名。不免有些无奈,但要让大多时候驱动自己前行的,变成热爱。
list1=list(map(int, input('请输入数值组成一个列表:').split(' ')))
print(list1)
当加上if __name__=='__main__':时,
只有当前模块是主程序的时候,该模块代码才会被执行,用于测试
真的是醉了。把map和filter弄混了,服了自己。
map:对每个元素进行相同的操作
filter:对一堆元素进行筛选
list1=list((filter(lambda x:(x%5!=0)&(x%7==0)
if x else 0,range(2000,3201))))
print(list1)
简单递归
def h(x):
if x==0 :
return 1
return x*h(x-1)
a=int(input('n='))
print(h(a))
实验1:
-
print 语句
按照以下图片编程实现
@@@@@@@@@@@
@@@@ @@@@
@@@ @ @@@
@@ @@@ @@
@@@ @ @@@
@@@@ @@@@
@@@@@@@@@@@ -
input 语句
(1)编程程序,输入直角三角形的两个直角边的长度 a、b,求斜边
c 的长度。
(2)编程程序,用于实现两个数的交换。
(3)编程程序,根据输入的三科成绩值,计算平均值和总和
(4)编程程序,根据输入的三角形的三边长度,输出三角形的面积 -
综合操作
1、用户输入一个三位自然数,计算并输出其百位、十位和个位上的
数字。
2、编写程序, 输入任意大的自然数, 输出各位数字之和。
3、编写程序,输入两个集合 setA 和 setB,分别输出它们的交集、
并集和差集 setA-setB。 4、 编写程序, 输入一个自然数, 输出它的二进制、 八进制、 十六进制表示形式。
5、如下图所示,完成以下两个题目
编写程序,输入本金、年利率和年份,计算复利(保留两位小数),
运行结果
6 .编写程序,输入球的半径,计算球的表面积和体积(结果保留两位小数) -
编写程序, 根据输入本金 b、年利率 r 和年数 n 计算最终收
v,v=b(1+r)";然后编写测试代码,提示输入本金、年利率和年数,显示最
终收益(保留两位小数)。 8.编写程序,求解一元二次方程 x2-10x+16=0,运行效果参见下图。 9.编写程序,提示输入姓名和出生年份,输出姓名和年龄,运行效果参见 -
输入直角三角形的两个直角边,求三角形的周长和面积,以及两
个锐角的角度。结果均保留一位小数。
import math
1.
print('''
@@@@@@@@@@@
@@@@ @@@@
@@@ @ @@@
@@ @@@ @@
@@@ @ @@@
@@@@ @@@@
@@@@@@@@@@@\n''')
print('++++++++++++')
print('+ + ')
print('++++++++++++')
for i in range(4):
print('学Python,来穿智播客黑马程序员')
2.
a=int(input('a='))
b=int(input('b='))
c=a**2+b**2
print(f"斜边c的长度:{math.sqrt(c)}")
import math
a=eval(input('a='))
b=eval(input('b='))
a,b=b,a
print(f"a={a},b={b}")
import math
a=eval(input('a='))
b=eval(input('b='))
c=eval(input('c='))
print(f"平均值:{(a+b+c)/2}")
print(f"总和:{a+b+c}")
import math
a=eval(input('a='))
b=eval(input('b='))
c=eval(input('c='))
e=(a+b+c)/2
s=math.sqrt(e*(e-a)*(e-b)*(e-c))
print(f"面积:{s:.2f}")
3.
a=eval(input('请输入一个三位自然数:'))
list1=[]
while a:
b=a%10
a//=10 #注意整除
list1.append(b)
print(f"个位:{list1[0]},十位:{list1[1]},百位:{list1[2]}")
sum=0
a=eval(input("请输入一位自然数:"))
while a:
sum+=a%10
a//=10
print(f"数位上的和:{sum}")
a={1,2,3,4,5}
b={4,5,6,7,8}
print(f"并集:{a|b}")
print(f"交集:{a&b}")
print(f"差集:{a-b}")
a=eval(input('请输入一个自然数:'))
print(f'二进制:{bin(a)}')
print(f'八进制:{oct(a)}')
print(f'十六进制:{hex(a)}')
import math
a=eval(input('请输入本金:'))
b=eval(input('请输入年利率:'))
c=eval(input('请输入年数:'))
amount=a*math.pow((1+b),c)
print(f'本金利率和为:{amount:.2f}')
import math
r=eval(input('请输入半径:'))
area=4*math.pi*r*r
volumn=(4/3)*math.pi*r**3
print(f"球体面积:{area:.2f}")
print(f"球体体积:{volumn:.2f}")
# 第七题同第五题类似
import math
a=eval(input('a='))
b=eval(input('b='))
c=eval(input('c='))
e=b**2-4*a*c
if e>0:
x1=((-b)+math.sqrt(e))/(2*a)
x2=((-b)-math.sqrt(e))/(2*a)
print(f"x1={x1},x2={x2}")
elif e==0:
x1=((-b)+math.sqrt(e))/(2*a)
print(f"x1=x2={x1}")
elif e<0:
print('方程无解')
import datetime
name=input("请输入姓名:")
birth=input("请输入出生年份:")
age=datetime.date.today().year-int(birth)
print(f"姓名:{name}\t 年龄:{age}")
import math
a=eval(input("请输入直角三角形边a="))
b=eval(input("请输入直角三角形边b="))
c=math.sqrt(a**2+b**2)
area=a*b/2
A=math.asin(a/c)*(180/math.pi)
A=round(A,2)
B=math.asin(b/c)*(180/math.pi)
B=round(B,2)
print(f"角度A={A}° \t 角度B={B}°")
实验2
-
编写程序计算 1+3+5+7…+99 之和。
-
编写程序,计算 2+4+6+8…+100 之和.
-
编写程序,使用不同的实现方法输出 2000~3000 的所有闰年。
-
编写程序,计算 Sn=1-3+5-7+9-11+…
-
编写程序,计算 Sn=1+1/2+1/3+…。
-
(只要实现四种方式中的一种即可)编写程序,打印九九乘法表。
要求输出九九乘法表的各种显示效果(上三角、下三角、矩形块等方
式) -
编写程序输入三角形的 3 条边,先判断是否可以构成三角形,如果可以,
则进一步求三角形的周长和面积,否则报错“无法构成三角形!”。其运行效果如
图下图所示(结果均保留位小数)。
提示: (1)3 个数可以构成三角形必须满足如下条件:每条边的边长均大于 0,
并且任意两边之和大于第三边。
(2)已知三角形的 3 条边,则三角形的面积= ( ) ( ) ( ) h h a h b h c
,其
中 h 为三角形周长的一半。
(3)其中根号需要导入 math 库并调用 sqrt 函数 -
编写程序,输入 x,根据如下公式计算分段函数 y 的值。请分别利用单
分支语句双分支结构以及条件运算语句等方法实现。 -
编写程序,输入一元二次方程的 3 个系数 a、b 和 c,求 ax2
+bx+c=0 方程的解。
1.
sum1=sum([i for i in range(1,100)])
print(sum1)
2.
sum2=sum([i for i in range(2,101,2)])
print(sum2)
3.
list1=filter(lambda x:(x%4== 0 and x%100 != 0) or x% 400 == 0,range(2000,3001))
list1=list(list1)
print(list1)
4.
s=0
for i in range(1,10):
if i%2!=0:
s+=(i*2-1)
else:
s+=(-1)*(i*2-1)
print(s)
5.
s=0
for i in range(1,11):
s+=(1/i)
print(s)
6.
#法一:
for i in range(9,0,-1):
for j in range(1,i+1):
print(f"{i}*{j}={i*j}",end='\t')
print('\n')
#法二:
for i in range(1, 10):
s = ""
for j in range(1, i + 1):
s += str.format("{0}*{1}={2} ", i, j, i * j)
print(s)
import math
a=eval(input('a='))
b=eval(input('b='))
c=eval(input('c='))
if a+b>c or a+c>b or b+c>a:
p=1/2*(a+b+c)
area=math.sqrt(p*(p-a)*(p-b)*(p-c))
print(f"面积:{area},周长:{2*p}")
else:
print('无法构成三角形')
import math
x=eval(input("x="))
if x>=0:
y=math.sin(x)+(x**2-3*x)/(x+1)+2*math.pi
else:
y=math.log((-5*x),math.e)+6*math.sqrt(abs(x)+math.e**4)-(x+1)**3
#print(round(y,2))
print(f"y={y:.2f}")
import math
a=float(input("a="))
b=float(input("b="))
c=float(input("c="))
e=b**2-4*a*c
if(a==0 and b==0):
print("无解")
elif (a==0 and b!=0):
print((-c)/b)
elif (e==0):
x1=(-b+math.sqrt(e))/2*a
print("x1=x2={}".format(x1))
elif (e>0):
x1=(-b+math.sqrt(e))/2*a
x2=(-b-math.sqrt(e))/2*a
print("x1={0},x2={1}".format(x1,x2))
else:# 求根公式中e取-e,根号下的结果为虚数部分
x1=str(-b/2*a)+"+"+str(math.sqrt(-e))+"i"
x2=str(-b/2*a)+"-"+str(math.sqrt(-e))+"i"
print("x1={0}\nx2={1}".format(x1,x2))
def go(n): #递归方法
if n==1:
return 1
s=n
return s*go(n-1)
n=eval(input("n="))
print(go(n))
s=1
for i in range(1,n+1): #循环方法
s*=i
print(s)
s=1
while n>=1: #while方法
s*=n
n-=1
print(s)
import random
def go(a,b):
while b!=0:
tmp=a%b
a=b
b=tmp
return a
a=random.randint(1, 100)
b=random.randint(1, 100)
tmp=go(a,b)
ans=(a*b)/tmp
print(f"a={a},b={b}")
print(f'最大公约数:{tmp},最小公倍数:{ans}')
实验3
-
创建列表以列表 list1 = [“lift”, “is”, “short”]和 list2 = [“You”, “need”,
“python”],并完成以下任务:
(1)输出 listl 中的第一个元素 lift 及其索引(下标)。
(2)在 short 后面增加一个! -
编写程序,将列表 s=[9,7,8,3,2,1,5,6]中的偶数变成它的平方,奇数保
持不变。其运行效果如下图所示。 -
分别使用 if 和 while 语句删除将列表 x = [1,2,1,2,1,1,1]中的元素“1”
全部删除。 -
编写程序,删除一个 list 里面的重复元素,即所有元素不重复。
提示:可以利用 s. append(x)方法把对象 x 追加到列表 s 的尾部。 -
(选做)统计所输入字符串中单词的个数,单词之间用空格分隔。其
运行效果如下图所示。 -
编写程序,输入字符串,将其每个字符的 ASCI 码形成列表并输出,
运行效果如下图所示。
(2)使用 s. append(x)方法将对象 x 追加到列表 s 的尾部。 -
(选做)创建列表,内容为 a-z、A~Z 和 0-9,从中随机抽出 6 个字符作
为验证码。 -
使用列表实现筛选法求素数。提示:素数判断方法:用一个数分
别去除 2 到 sqrt(这个数),如果能被整除,则表明此数不是素数,
反之是素数。 -
编写程序,求列表 s=[9,7,8,3,2,1,55,6]中的元素个数、最大值、最小
值,以及元素之和、平均值。请思考有哪几种实现方法?
10.创建一个空字典 student,录入学生姓名和成绩,并一一对应,当所有
学生的信息录入完之后,输入 1 退出。需要注意的是(学生成绩范围
为 0~150)超出范围重新输入。
11.自己编写一个长度至少五 5 的字典,其中姓名为键和性别为值;
请编写一个程序,删除性别为男的员工信息。
12.(选做)请编写一个程序,使用字典存储学生信息,学生信息包括学
号和姓名,请根据学生学号从小到大输出学生的信息。提示:使用
sorted 函数并指定其对应的参数 key 的值。
13.(选做)请编写一个程序,用于统计字符串(“asjhsdjkgavsdjasdbj”)
中每个字母的出现次数(字母忽略大小写,a 和 A 看是作一个字母),
统计出的结果,请按照[‘a’:3,’b’:2]的格式输出。提示:可以使用 chr
函数将字母变为整数,然后利用整数值的大小进行判定。
14.使用元组创建一个存储 Python 关键字的对象,并利用 input 函数输
入任何一个字符串,来检测输入的单词是否是 Python 的关键字。
15.使用集合实现筛选法求素数
list1=["life","is","short"];
list2=["You","need","python"]
print(list1[0],list1.index("life"))
list1.append("!")
print(list1)
s=[9,7,8,3,2,1,5,6]
s=list(map(lambda x:x**2 if x%2==0 else x, s))
print(s)
x = [1,2,1,2,1,1,1]
y=x[:]
#由于在原数列中删除元素,会改变列表下标,参照y中元素删除x中元素
for ele in y:
if ele==1:
x.remove(ele)
print(x)
x = [1,2,1,2,1,1,1]
while 1 in x:
x.remove(1)
print(x)
list1=[1,1,1,2,2,2,3,3,3]
s1=set(list1)
print(s1)
s1="The qu1ck brown fox jumps over the lazy dog."
list1=s1.split(" ")
print(len(list1))
s="ABCDE123"
list1=[]
for ele in s:
list1.append(ord(ele))
print(list1)
import random
list1=[]
for i in range(6):
s1=random.randint(1,3)
if(s1==1): #随机生成大写字母
a=random.randint(65,90)
a_chr=chr(a)
list1.append(a_chr)
elif s1==2: #随机生成小写字母
b=random.randint(97,122)
b_chr=chr(b)
list1.append(b_chr)
elif s1==3:
c=random.randint(0,9)
list1.append(c)
print("形成后验证码: {}".format(list1[:]))
list1=[str(i) for i in list1] #统一为字符类型 方便用join
s=''.join(list1)
print(s)
import random
list1=[]
for i in range(6):
k=random.randint(1,3)
if k==1:
a=random.randint(65, 90)
list1.append(chr(a))
elif k==2:
a=random.randint(97, 122)
list1.append(chr(a))
elif k==3:
a=random.randint(0,9)
list1.append(str(a))
list1=''.join(list1)
print(list1)
import math
def isprime(x):
k=math.ceil(math.sqrt(x))
for ele in range(2,k+1):
if x%ele==0:
return 1
return 0
list1=[1,5,6,9,78,2,45,5,7,5]
list2=[]
for ele in list1:
if isprime(ele)==0 :
list2.append(ele)
print(list2)
import math
s=[9,7,8,3,2,1,55,6]
print(len(s))
print(max(s))
print(min(s))
print(sum(s))
print(round(sum(s)/len(s),2))
法一:
name=[] #使用两个列表分别存姓名和分数,再用zip组合
sc=[]
while 1:
s1=input("请输入学生姓名:")
name.append(s1)
while 1:
s2=int(input("请输入分数:"))
if s2>=0 and s2<=150:
sc.append(s2)
break
else:
print("请重新输入分数。")
x=int(input("输入“0”退出录入,“1”继续录入。\n"))
if x== 0:
break
stud=dict(zip(name,sc))
print(stud)
法二:
stu={}
while 1:
name=input("请输入姓名:")
score=float(input("请输入分数:"))
stu.update({name:score})
k=int(input("退出输入1,继续录入输入0:"))
if k==1:
break
print(stu)
s1=[]
person={"张三":"男","李四":"女","王五":"男"}
for key,value in person.items():
if value=='男':
s1.append(key)
for ele in s1:
del person[ele]
print(person)
stu={'1001':'zhong','2002':'li','1100':'yang'}
print(sorted(stu)) #默认对键排序,返回键
print(sorted(stu.values())) #对值进行排序,返回值
#结果包含键值对
stu=sorted(stu.items(),key=lambda x:x[0])
print(stu)
法一:(函数实现)
s1="asjhsdjkgavsdjasdbj"
d={}
for i in s1: #键不会重复
b=s1.count(i)
d.update({i:b})
print(d)
法二:(更好一点)
s1="asjhsdjkgavsdjasdbj"
d={}
for i in s1: #
if i in d:
d[i]+=1
else:
d[i]=1
print(d)
a=('set','list','tuple')
s=input('请输入一字符串:')
f=0
for i in a:
if i in s:
f=1
break
if f==1:
print("判断:字符串中包含python关键字。")
else:
print("判断:字符串中不包含python关键字。")
#素数筛选法 (有一定难度)
import math
def isprime(n):
num=set(range(2,n))
m=int(math.sqrt(n))+1
#最大数的平方根,以及小于该数字的所有素数
list1=[p for p in range(2,m)
if 0 not in [p%d for d in range(2,int(p**0.5)+1)]]
for i in list1:
for j in range(2,n//i+1):
num.discard(i*j)
return num
print(isprime(1001))
实验4 (字符串+正则)
1.统计所输入字符串中单词的个数,单词之间用空格分隔。其运行效果
如下图所示。
请输入字符串: The qu1ck brown fox jumps over the lazy dog.
其中的单词总数有:9
2. 编写程序,给出一个字符串,将其中的字符“E”用空格替换后输出。
3. 从键盘交互式输人一个人的 18 位的身份证号,以类似于“2001 年 09
月 12 日”的形式输出该人的出生日期。
4.将字符串’abcdefg’使用函数的方式进行倒序输出
5. 在我们的生活中,节假日的问候是必不可少的,请使用字符串格式
化的方式写一个新年问候语模板.
6. 用户输入一个字符串,将下标为偶数的字符提出来合并成一个新的
字符串 A,再将下标为奇数的字符提出来合并成一个新的字符串 B,再
将字符串 A 和 B 连接起来并输出。
7. 请根据下列需求,编写一个程序。用户输入一个字符串,请将字符
串中的所有字母全部向后移动一位,最后一个字母放到字符开头,最
后将新的字符串输出。
8.基于 input 函数,对输入的字符串进行处理,并将返回替换了某些
字符的字符串,规则如下
如果一个字母是大写辅音,请将该字符替换为“Iron”。
如果字母是小写辅音或非字母字符,则对该字符不执行任何操作
如果一个字母是大写元音,请将该字符替换为“Iron Yard”。
如果一个字母是小写元音,请用“Yard”替换该字符。
- (选做)老王在一个"胖子健身俱乐部",每到月底老王就很担心,因
为每个月都会公布一份成员体重列表,每个月他都是列表中的最后一
个,这意味着他是最重的。于是他就建议会长修改规则,比如新的规
则如下:
新的排序规则将是按照“权重”来进行排序,如果权重相同,则按照体
重字符串来进行排序。(权重的计算规则:体重数字不同位数上的数字
的总和)
给定某种正常顺序俱乐部的成员的体重字符串,如何实现按照新规则
排序呢?测试用例:输入: "99 189 86 75"输出: “75 86 189 99”。
s="The qu1ck brown fox jumps over the lazy dog."
list1=s.split()
print(len(list1))
s="AAFHEELLKJE"
s=s.replace('E', ' ')
print(s)
s='321322200202999999'
print(f"{s[6:10]}年{s[10:12]}月{s[12:14]}日")
s='abcdefg'
l1=list(reversed(s))
print(''.join(l1))
#第五题略
s='123456789'
a=""
b=""
for ele in s[::2]:
a+=ele
for ele in s[1::2]:
b+=ele
print(a,b,a+b)
s="ngfgtyhjjhg"
s=s[-1]+s[:-1]
print(s)
import re
text=input("请输入字符串:")
for i in text:
if i=='A' or i=='O' or i=='E' or i=='I' or i=='U': #大写元音
a=re.sub('[AOEIU]','Iron Yard',text)
if i == 'a' or i == 'o' or i == 'e' or i == 'i' or i == 'u':#小写元音
a=re.sub('[aoeiu]','Yard',text)
if i > 'A' and i < 'Z': #大写辅音
a=re.sub('[A-Z-[AOEIU]]','Iron',text)
print("替换后的字符为:",a)
做的最好的一道题:胖子体重(当时试了好久)
s=input("请输入胖子们的体重:")
#1.由于每个数字是字符类型,用split分开
#2.统计每个数字位上的和 sum(int(c) for c in x)
#3.若和相等,则根据字符串升序排列,因此匿名函数两个标准
l1=sorted(s.split(" "),key=lambda x:(sum(int(c) for c in x),x[0]))
print(l1)
实验五
- 编写程序,利用元组作为函数的返回值,求序列类型中的最大值、最
小 值 和 元 素 个 数 , 并 编 写 测 试 代 码 , 假 设 测 试 数 据 分 别 为
s1=[9,7,8,3,2,1,55,6] 、 s2=[" apple",“pear” melon",“kiwi”] 和 s3="
TheQuickBrownFox"。 - 设计一个函数,实现输入一个五位数的正整数(程序要对输入数据
的合法性进行检查),对输入的数据加密后再返回,加密规则:每位数
字都加上 7,然后用 10 取模,再将得到的结果交换顺序:第一位和第
二位交换,第三位和第五位交换,第一位和第四位交换。 - 请编写一个程序,使用字典存储学生信息(自己编写至少十个学生
的信息),学生信息包括学号和姓名,请根据学生学号从小到大输出
学生的信息。 - 首先,使用标准库 random 生成一个包含 50 个介于 1~100 的随机整
数的列表,编写函数 def isPrime(n)用来测试整数 n 是否为素数;接
下来使用内置函数 filter(把函数 isPrime()作用到包含若干随机整
数的列表 lst 上,最后程序输出一个列表,其中只包含列表 lst 中不是
素数的那些整数。 - 编写程序,清分别使用递归和非递归方式实现。定义一个求阶乘的
函数 fact(n),并编写测试代码,要求输入整数(n≥0)。运行效果如
下图所示。 - 编写程序实现斐波那契数列,斐波那契数列:1、1、2、3、5、8、
13、21、34、……在数学上,斐波那契数列以如下被以递推的方
法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)。 - 阅读并适当增加必要的代码来调试下面的代码,分析代码功能,
发现并解决代码中的错误。提示:此代码计算𝐶(n,i)
8.小球从 100m 的高度自由落下,每次落地后反弹回原高度的一半;再
落下,定义函数 cal 计算小球在第 n 次落地时,共经过多少米以及第
n 次反弹多高。定义全局变量 Sn和 Hn分别存储小球经过的路程和
第 n 次的高度。主函数输入 n 的值,并调用 cal 函数计算输出 Sn和 Hn的值。
def go(list1):
maxn=max(list1)
minn=min(list1)
lg=len(list1)
return maxn,minn,lg
s1=[9,7,8,3,2,1,55,6]
a,b,c=go(s1)
print(f"最大值={a},最小值={b},元素个数={c}")
s2=["apple","pear","melon","kiwi"]
a,b,c=go(s2)
print(f"最大值={a},最小值={b},元素个数={c}")
s3="TheQuickBrownFox"
a,b,c=go(s3)
print(f"最大值={a},最小值={b},元素个数={c}")
def go(n):
l1=[]
while n:
l1.append((n%10+7)%10)
n//=10
l1[0],l1[1]=l1[1],l1[0]
l1[2],l1[4]=l1[4],l1[2]
l1[0],l1[3]=l1[3],l1[0]
return l1
l1=go(12345)
l1=[str(x) for x in l1] #join的方法只用于字符串连接
print(''.join(l1))
id1=[5,2,3,4,1,6,7,8,9,10]
name1=['张','李','王','杨','钟','蒋'
,'宋','莫','巢','刘']
stud=dict(zip(id1,name1))
stud1=sorted(stud.items(),key=lambda x:x[0])
print(stud1)
import random
import math
def isprime(x):
k=int(math.sqrt(x))+1
for ele in range(2,k):
if x%ele==0:
return 1 #不是素数返回1
return 0 #是则返回0
'''
l1=[]
for ele in range(50):
l1.append(random.randint(1, 100))
print(l1)
更棒的实现方式'''
data=[random.randint(1,100) for ele in range(50)]
l1=list(filter(isprime, data))
print(l1)
def fact(n):
s=n
if n==1:
return 1
return s*fact(n-1)
a=fact(5)
print(a)
def fi(n):
if n==1 or n==2:
return 1
return fi(n-1)+fi(n-2)
a=fi(9) #第几位数的值
print(a)
def cni(n,i):
minNI=min(i,n-i)
result = 1
for j in range (0,minNI):
result=result*(n-j)/(minNI-j) #整除不对
return result
a=cni(5,4)
print(a)
def go(n):
global s,h
s=0
h=100
for i in range(n):
s+=h
h/=2
go(10)
print(f"Total of road is {s} meter")
print(f"The heighth is {h} meter")