求最大公约数

描述

编写程序,获得用户输入的数值M和N,求M和N的最大公约数。请补充横线处代码。

def func(a,b):

​ if a>b:

​ a,b=b,a

​ r=1

​ while r!=0:

​ (1)

​ a=b

​ b=r

​ return a

‍m=eval(input(“请输入一个整数:”))

‍n=eval(input(“请输入一个整数:”))

‍print(2)

1
2
3
4
5
6
7
8
9
10
11
12
def func(a,b):
if a>b:
a,b=b,a
r=1
while r !=0:
r=a%b
a=b
b=r
return a
m=eval(input("请输入一个整数:"))
n=eval(input("请输入一个整数:"))
print(func(m,n))

字符串格式化输出

描述
获得用户的输入当作填充符号,以30的字符宽居中输出PYTHON字符串。请完善代码。


a=input(“请输入填充符号:”)


s=“PYTHON”


print("{1}".format(2))

1
2
3
a = input("请输入填充符号:")
s = "PYTHON"
print("{0:{1}^30}".format(s,a))

斐波那契数列

描述
编程:根据斐波那契数列的定义,F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2) (n>=2),输出不大于100的斐波那契数列序列元素。

1
2
3
4
5
6
7
8
9
def func(n):
if n < 2:
return n
else:
return func(n-1) + func(n-2)
n = 1
while func(n) <= 100:
print(func(n),end=" ")
n += 1

输入输出两种函数

描述
编程:首先定义函数以n为参数,实现如果n为奇数,输出表达式1+1/3+…+1/n的值;如果n为偶数,输出表达式1/2+1/4+…+1/n的值;主函数输入一个自然数n,
调用之前已定义函数输出表达式结果且保留2位小数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def func(n):
if n % 2 == 0:
start, step = 2, 2 # 如果n是偶数,设置循环的起始值和步长为2
else:
start, step = 1, 2 # 如果n是奇数,设置循环的起始值为1,步长为2
sum = 0
for i in range(start, n+1, step):
sum += 1 / i
return sum

# 主函数输入一个自然数n,调用之前已定义函数输出表达式结果且保留2位小数
n = int(input("请输入一个自然数n:"))
r = func(n)
print("表达式的值为:{:.2f}".format(r))

含正负号的函数

描述
编写函数求出1/(1x2) - 1/(2x3) + 1/(3x4) - 1/(4x5) + …前n项和,函数以n为参数。项数n由用户在主函数中输入,调用之前已定义函数输出表达式结果。

1
2
3
4
5
6
7
8
9
10
def func(n):
sum = 0
for i in range(1, n+1):
if i%2 ==0:
sum -=1/(i*(i+1))
else:
sum += 1 /(i*(i+1))
return sum
n=int(input("请输入正整数n:"))
print("表达式的值为:{:.2f}".format(func(n)))

零星的代码

美元转换

1
2
3
4
5
6
7
8
9
10
while True:
money = input("请输入美元或者人民币(提示:美元用$,人民币用R,r或者¥)")
if money [-1]in['$']:
D = 6 * eval(money[0:-1])
print("美元转换成人民币: {:.2f}R".format(D))
elif money [-1] in ['R', 'r','¥']:
R=eval(money[0:-1])/6
print("人民币转换成美元: {:.2f}$".format(R))
else:
print("格式有误重新输入!!!")

奇偶行分离

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# -*- coding: utf-8 -*-
'''
python读取文件,偶数行输出一个文件,奇数行输出一个文件
'''
def fenhang(infile,outfile,outfile1):

infopen = open(infile,'r',encoding='utf-8')
outopen = open(outfile,'w',encoding='utf-8')
outopen1 = open(outfile1, 'w', encoding='utf-8')
lines = infopen.readlines()
i = 0
for line in lines:
i += 1
if i % 2 == 0:
outopen.write(line)
else:
outopen1.write(line)
infopen.close()
outopen.close()
fenhang("1.txt","2.txt","3.txt")

中英文分离

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#deal with voa

def dealVoa(orgtxts,Eng,Chn):
fi = open(orgtxts,'r',encoding='utf-8')
foe = open(Eng,'w')
foc = open(Chn,'w')
elist = ',.'
clist = ',。'
for line in fi:
if len(line) > 1:
if ',' in line or '。' in line or line.find(' ') == -1:
foc.write(line)
elif ',' in line or '.' in line or line.find(' '):
foe.write(line)
fi.close()
foe.close()
foc.close()

orgtxts = '测试'
Eng = orgtxts + '_e' + '.txt'
Chn = orgtxts + '_c' + '.txt'
orgtxts = '测试' + '.txt'
dealVoa(orgtxts,Eng,Chn)#只适合,。和,.分离不在同一行的中英分离

逆序输出

1
2
3
4
5
s='众志成城,共同抗疫'
print("\n".join(s))

r=input('请输入一段文字')
print("\n".join(r[::-1]))#s[::-1]==resversed(s)

列表与元组

列表的降序

描述
输入一个整数列表,列表元素为20个,元素之间逗号隔开,编写程序,将前10个元素升序排列,后10个元素降序排列,并输出列表。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import random
s = []
for i in range(20):
s.append(random.randint(0,100))
a = s[0:10]
a.sort()
b = s[10:20]
b.sort()
b.reverse()#也可以在sort中加reverse=True
print(s)
print(a)
print(b)
s = a + b
print(s)

输入列表:

1
2
3
4
5
6
7
8
9
10
11
12
13
n = input("请以列表格式输入一个列表:\n")
s = list(n[1:-1].split(",")) #将输入的字符串转化为字符串列表
s = list(map(int,s)) #将字符串列表转换为数字列表,这两步必须有
a = s[0:10]
a.sort()
b = s[10:20]
b.sort()
b.reverse()
print(s)
print(a)
print(b)
s = a + b
print(s)

知识点:
1、排序部分同上
2、利用map()函数将字符串列表转化为数字列表
注:以上代码在十个以下元素只有升序效果,超过十个元素,才会有降序效果
*以下是折半升序降序的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
n = input("请以列表格式输入元素的列表:\n")
s = list(n[1:-1].split(",")) #将输入的字符串转化为字符串列表
s = list(map(int,s)) #将字符串列表转换为数字列表
l = len(s) #获取列表的长度
frontHalfList = s[0:int(l/2)] #获取前一半列表的值
frontHalfList.sort() #对前一半进行升序排列
backHalfList = s[int(l/2):]
backHalfList.sort()
backHalfList.reverse()
print(frontHalfList)
print(backHalfList)
s = frontHalfList + backHalfList
print(s)