实验四
task.1
print(sum)
sum = 42
print(sum)
def inc(n):
sum = n+1
print(sum)
return sum
sum = inc(7) + inc(7)
print(sum)

task.2
def func(a, b, c, /, *, d, e, f):
return ([a, b, c, d, e, f])
print(func(1, 2, 3, d=4, e=5, f=6))

task.3
def solve(a, b, c):
'''
求解一元二次方程, 返回方程的两个根
:para: a,b,c: int 方程系数
:return: tuple
'''
delta = b*b - 4*a*c
delta_sqrt = abs(delta)**0.5
p1 = -b/2/a;
p2 = delta_sqrt/2/a
if delta>=0:
root1 = p1 + p2
root2 = p1 - p2
else:
root1 = complex(p1, p2)
root2 = complex(p1, -p2)
return root1, root2
print(solve.__doc__)
while True:
try:
a,b,c = eval(input('Enter eqution coefficient: '))
if a == 0:
raise
except:
print('invalid input, or, a is zero')
break
else:
root1, root2 = solve(a, b, c)
print(f'root1 = {root1:.2f}, root2 = {root2:.2f}')
print()

task.4
def list_generator(begin, end, step=1):
ls = []
a = begin
b = end
while a <= b:
ls.append(a)
a += step
return ls
list1 = list_generator(-5, 5)
print(list1)
list2 = list_generator(-5, 5, 2)
print(list2)
list3 = list_generator(1, 5, 0.5)
print(list3)

task.5
def is_prime(n):
if n<2:
return False
else:
for i in range(2,n):
if n%i==0:
return False
break
else:
return True
num=[]
for i in range(20):
if is_prime(i):
num.append(i)
def summary(x):
i = 0
while True:
for j in range(i, len(num)):
s = num[i]+num[j]
if x == s:
s = f"{s} = {num[i]} + {num[j]}"
return s
i += 1
for i in range(4, 21, 2):
print(summary(i))

task.6
def encoder(a):
"""对文本加密"""
result = ''
for i in range(len(a)):
if ord(a[i]) in range(65, 91):
result+=chr((ord(a[i])-65+5)%26+65)
elif ord(a[i]) in range(97, 123):
result+=chr((ord(a[i])-97+5)%26+97)
else:
result += a[i]
return result
def decoder(a):
"""解码加密文本"""
result = ''
for i in range(len(a)):
if ord(a[i]) in range(65, 91):
result+=chr((ord(a[i])-65+26-5)%26+65)
elif ord(a[i]) in range(97, 123):
result+=chr((ord(a[i])-97+26-5)%26+97)
else:
result += a[i]
return result
text = input("输入英文文本: ")
print(f"编码后的文本: {encoder(text)}")
print(f"对编码后的文本解码: {decoder(encoder(text))}")

task.7
def collatz(n):
if n%2==0:
n=int(n/2)
return n
else:
n=n*3+1
return n
try:
n=eval(input('输入一个正整数:'))
if n<=0 or type(n) is not int:
raise
except:
print('Error:must be a positive inreger')
else:
list=[]
while n!=1:
list.append(n)
n=collatz(n)
list.append(1)
print(list)


浙公网安备 33010602011771号