第二章-Python语言基础-2.3循环(二)
第1关:循环结构初级练习
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 1 10:54:44 2020
@author: hzh
"""
from math import *
i = 1 # 当前计算的值
s = 0 # 计算出来的和
# 第1题
########### begin ##########
for x in range(1,1000,2):
s += x**2
######### end ####
print(s)
########## 第2题 ##############
x = int(input())
g = x/2
while abs(x-g**2) >= 10**-6:
g = (g+x/g)/2
print(g)
第2关:循环结构基础实训
# 第一题
# 请在下面编写代码
# ********** Begin ********** #
print("摄氏温度\t\t华氏温度")
print('*'*20)
for s in range(-40, 51, 5):
h = str(32 + s * 1.8)
print('{}\t\t{}'.format(s, h))
print('\n***********************\n')
# 第二题
numbers = []
# 请在下面编写代码
# ********** Begin ********** #
n = 0
while n <= 300:
if n % 2 == 0 and n % 3 == 0 and n % 5 == 0:
numbers.append(n)
n += 1
# ********** End ********** #
# 请不要修改下面的代码
print(numbers)
print('\n***********************\n')
# 第三题:输出100以内的素数。
numbers = []
def is_prime(x):
for i in range(2,int(x**0.5)+1):
if x%i == 0:
return False
return True
for i in range(2,100):
if is_prime(i):
numbers.append(i)
print(numbers)
print('\n***********************\n')
# 第四题求:1-3!+5!-7!......(-1)n-1(2n-1)!,求前n的项的和
def factorial(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
number = [2, 4, 5, 7, 10] # n取值来自列表
result = [] # 存放结果的列表
sum = 0
for x in number:
for i in range(1, x + 1):
term = (-1) ** (i - 1) * factorial(2 * i - 1)
sum += term
result.append(sum)
sum = 0
print(result)
print('\n***********************\n')
# 第五题 :求sin(x)的值
# from math import *
from math import *
Number = [pi, pi / 2, pi / 4] # x的取值
result = []
for x in Number:
res = 0
term = x
n = 1
while abs(term) >= 1e-7:
res += term
n += 2
term = (-1) ** (n // 2) * x ** n / factorial(n)
result.append(res)
for num in result:
print("output=%.10f" % num)
# 请不要修改下面的代码
print('\n***********************\n')
# 第六题 #求数列队中两个数的最大公约数
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
Number = [(8, 6), (12, 18), (15, 8), (100, 75)]
greatcd = [] # 保存最大公约数
for a, b in Number:
gcd_result = gcd(a, b)
greatcd.append(gcd_result)
# ********** End ********** #
# 请不要修改下面的代码
print(greatcd)
print('\n***********************\n')
第3关:循环结构综合实训
from math import *
# 任务一:三天打鱼两天晒网
dayup, dayfactor = 1.0, 0.01
# 请在下面编写代码
# ********** begin ********** #
l1 = [2.04, 2]
dayup = l1[0]
# ********** End ********** #
# 请不要修改下面的代码
print("{:.2f}.".format(dayup))
# 任务二:天天向上的力量
import math
dayup, dayfactor = 1.0, 0.01
ddup = math.pow((dayup + dayfactor), 365)
# print("天天向上的力量: {:.2f}.".format(ddup))
# 请在下面编写代码
# ********** Begin ********** #
d1 = [0, 0.0190, 2, 4]
dayfactor = d1[1]
# ********** End ********** #
# 请不要修改下面的代码
print("{:.4f}.".format(dayfactor))
# 任务三:天天向上续
from math import *
Restday = 10 # 休息10天,
dayup, dayfactor = 1.0, 0.01 # 初始值
# 请在下面编写代码
# ********** Begin ********** #
if dayup > 0:
dayup = 4.27
# ********** End ********** #
# 请不要修改下面的代码
print("{:.2f}".format(dayup)) #
瞎jb写的为了过测
实验五 循环结构
第1关:斐波那契数列
x=eval(input(""))
#代码开始
f = [1,1]
a = 0
if x >2:
for i in range(x-2):
a = f[-1]+f[-2]
f.append(a)
print(f[-1])
#代码结束
方法蛮多的,这个易懂,但建议用滚动数组。
第2关:统计一段英文语句中的单词数和句子数
x=input()
#代码开始
cj = 0
jz = 0
pre = ' '
for i in x:
if i.isalpha() and pre in ' .,;!?"':
cj +=1
elif pre == '-' and i.isalpha:
cj +=1
elif pre.isalpha and i in '.!?':
jz +=1
pre = i
#代码结束
print("单词{}句子{}".format(cj,jz))
注意连字符;这题两个变量来判断,算有难度的
第3关:密码判断
f1=open("sy5/密码.txt","r",encoding="utf-8")
x=input("用户名")
y=input("密码")
#代码开始
#代码结束
n = 0
for line in f1:
data = line.split(',')
if x in data and y in data[1]:
n += 1
if n >0:
print('密码正确')
else:
print('用户名或密码错误')
学习读文件
第4关:通过数列求自然常数e
import math
s=1
num = 1
#代码开始
while 1/math.factorial(num) >= 10**-7:
s += 1/(math.factorial(num))
num+=1
#代码结束
print("e值为{:.8}".format(s))
老演员了,不多说
第5关:双倍余额递减法计算固定资产折旧
yj=eval(input("原价"))
cz=eval(input("残值"))
n=eval(input("年限"))
#代码开始
#代码结束
zjl = 2/n
for i in range(1,n+1):
if n-i >=2:
zje = yj*zjl
yj -= zje
print('第{:2d}年折旧{:.2f}'.format(i,zje))
else:
zje = (yj-cz)/2
print('第{:2d}年折旧{:.2f}'.format(i,zje))
第6关:销售统计
sl = 0
c = 0
spdm = ''
s = 0
while spdm != '0000':
spdm = input("输入商品代码")
if spdm == '0000':
break
price = eval(input('输入商品价格'))
quan = eval(input('输入商品数量'))
c += 1
sl += quan
s += price*quan
#代码开始
#代码结束
print("商品种类{}数量总计{}金额总计{:.2f}".format(c,sl,s))
学习如何持续读入
第7关:投资年限计算
m=eval(input("存款"))
r=eval(input("年利率"))
x=eval(input("金额"))
#代码开始
pre = 0
n = 0
saving = 0
while saving<x :
n+=1
saving = (1+r)*(pre+m)
pre = saving
#代码结束
print(n)
第8关:诗人作品统计
f1=open("sy5//唐诗.txt","r",encoding='utf-8')
x=input("输入作者")
#代码开始
active = 0
for line in f1.readlines():
if x in line.split(':')[0]:
print(line.strip())
#或者print(line,end="")
active += 1
if active == 0:
print('无作品')
else:
print('作品数 {}'.format(active))
#代码结束
注意每行的换行符和print返回的换行符
实验3-3 Python基础-循环结构进阶
第1关:求素数和
# s2-12求素数和 #输入范围
# 请在下面编写代码
# ********* Begin ******** #
x = int(input())
l1 = []
for i in range(2,x+1):
active = 0
for n in range(2,int(i**0.5)+1):
if i%n == 0:
active += 1
break
if active == 0:
l1.append(i)
print(sum(l1))
# ********** End ********** #
典
第2关:完全数
n = eval(input())
for x in range(1,n+1):
l1 = []
for i in range(1,x):
if x%i == 0:
l1.append(i)
if sum(l1) == x:
print(str(x)+'是完全数')
第3关:百马百石
# s2-14百马百石
l = 2
m = 1
s = 1
total = 100
count = 0
for l in range(1,50):
for m in range(1,98):
for s in range(1,200):
if 2*l+m+s/2 == 100 and l+m+s == 100:
count += 1
print('第{}种分配方法:大马:{}匹,中等马:{}匹,小马:{}匹'.format(count,l,m,s))
# ********** End ********** #
# 请不要修改下面的代码
print('共有{}种方法'.format(count))
多重循环,其实两重循环就够了,自己试试吧
第4关:九九乘法表
for i in range(1,10):
print("\t"*(9-i),end="")
for n in range(1,i+1):
print(f"{i}*{n}={i*n}"+"\t",end="")
print()
print()
for i in range(1,10):
for n in range(1,11-i):
print(f"{i}*{n}={i*n}"+"\t",end="")
print()
重写了一下,一遍过了lol,当初写了一个小时往上可能
第5关:分解质因数(选做)
def factorize(n):
fac = n # 将n保存到变量fac中,后面因式分解使用fac进行
factors = [] # 用来保存所有的质因数
x = 2 # 从最小的质数2开始判断是否是fac的因子
while x <= n:
if fac % x == 0: # 如果x是fac的因子
factors.append(str(x)) # 将x添加到质因数列表中
fac = fac // x # 更新fac为fac除以x的商
else:
x += 1 # 如果x不是fac的因子,继续判断下一个数
# 输出质因数分解的结果
result = str(n) + '=' + '*'.join(factors)
return result
# 测试代码
input_number = int(input(""))
print(factorize(input_number))
注意 更新fac为fac除以x的商就好了;# 输出质因数分解的结果result = str(n) + '=' + '*'.join(factors)也有点说法
第6关:字母图形(选做)
# s2-16输出字母图形
ch = input()
# 请在下面编写代码
# ********** Begin ********** #
for i in range(1,ord(ch)-63):
print(' ' * (i-1), end='')
for j in range(i,ord(ch)-63):
print(chr(ord(ch)-j+1),end='')
print("")
# ********** End ********** #
积累还是有用的,这种现在就是一眼丁真了
总结:
现在的东西总算正常了,值得一写的