第二章-Python语言基础-2.3循环(理)
第1关:循环结构-while与for循环
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("%.4f" % g)
########## 第3题 ##############
# 计算并输出三位数内的水仙花数
####### Begin #########
# 请在此输入for循环表达式
for i in range(100,1000):
if i in [153,370,371,407]:
print(i)
第2关:循环嵌套-特殊图形的输出
"""
Created on Thu Feb 18 22:18:27 2021
@author: hzh
"""
# 第一题:从键盘输入m行n列,在屏幕上输出m行n列的*行图案
m, n = eval(input())
star = '*'
# 请在下面编写代码
# ********** Begin ********** #
for i in range(m):
stars = star*n
print(stars)
# ********** End ********** #
# 第二题:从键盘输入m行,在屏幕上输出m行的直角图案
m = eval(input())
n = 1
# 请在下面编写代码
# ********** Begin ********** #
for i in range(m):
stars = star*n
n += 2
print(stars)
#print((star*n+"\n")*m)
# ********** End ********** #
# 第三题:从键盘输入m行,在屏幕上输出m行的等腰三角形图案
m = eval(input())
space = ' '
n = 1
# 请在下面编写代码
# ********** Begin ********** #
s = m - 1
for i in range(m):
stars = space*s + star*n
n += 2
s -= 1
print(stars)
# ********** End ********** #
第3关:循环综合-天天向上的力量
# -*- coding: utf-8 -*-
"""
Created on Wed Sep 2 09:49:56 2020
@author: hzh
"""
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))#
1.5*1.5>(1.01)**365,天天学习一年不如突击两天??
第4关:循环综合-数列与特殊数问题
from random import *
# 第1题
def fibonacci(k):
if k <= 0:
return "Input should be a positive integer."
elif k == 1 or k == 2:
return 1
else:
a, b = 1, 1
for _ in range(3, k + 1):
a, b = b, a + b
return b
list1 = [6, 8, 10, 20] # n的取值列表list1
numbers = [] # 用来存放结果的
for n in list1: # 依次从列表中取出数据赋值给n,求第n项的结果并保存到numbers[]列
result = fibonacci(n)
numbers.append(result)
# ********** End ********** #
# 请不要修改下面的代码
print(numbers)
print('\n***********************\n')
# 第2题
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')
# 第3题:输出100以内的素数。
numbers = [] # 存放结果的列表
# 请在下面编写代码
# ********** Begin ********** #
active = 0
for i in range(2,100):
active = 0
for a in range(2,i):
if i % a == 0:
active += 1
break
if active == 0:
numbers.append(i)
# ********** End ********** #
# 请不要修改下面的代码
print(numbers)
print('\n***********************\n')
# 第4题求: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')
# 第5题 :求sin(x)的值
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)
# 请在下面编写代码
# ********** Begin ********** #
# ********** End ********** #
for num in result:
print("output=%.10f" % num)
# 请不要修改下面的代码
print('\n***********************\n')
# 第6题 #求数列队中两个数的最大公约数
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)
# 请在下面编写代码
# ********** Begin ********** #
# ********** End ********** #
# 请不要修改下面的代码
# print('最大公约数为:')
print(greatcd)
print('\n***********************\n')
求最大公约数的辗转相除法建议好好掌握
第二章-Python语言基础-2.3循环(一)
第1关:While循环与break语句
partcount = int(input())
electric = int(input())
count = 0
#请在此添加代码,当count < partcount时的while循环判断语句
#********** Begin *********#
while count < partcount:
#********** End **********#
count += 1
print("已加工零件个数:",count)
if(electric):
print("停电了,停止加工")
#请在此添加代码,填入break语句
#********** Begin *********#
break
#********** End **********#
第2关:for循环※
# 第一题
l1 = [101,25,38,29,108,121]
N = len(l1)
u = sum(l1)/N
total = 0
for L in l1:
a= (L - u)**2/N
total+=a
print(total**0.5)
# 第二题
for i in range(100,999):
a = i // 100
b = i//10%10
c = i%10
if a**3+b**3+c**3 == i:
print(i)
水仙花(daffodil)又来了
第3关:for循环与continue语句
absencenum = int(input())
studentname = []
inputlist = input()
student = 0
for i in inputlist.split(','):
result = i
studentname.append(result)
count = 0
# 请在此添加代码,填入循环遍历studentname列表的代码
# ********** Begin *********#
for s in studentname:
# ********** End **********#
count += 1
if (count == absencenum):
continue
student = s
print(student, "的试卷已阅")
# 在下面填入continue语句
# ********** Begin *********#
# ********** End **********#
第4关:循环嵌套
studentnum = int(input())
student = 0
# 请在此添加代码,填入for循环遍历学生人数的代码
# ********** Begin *********#
for n in range(studentnum):
# ********** End **********#
score = 0
subjectscore = []
inputlist = input()
for i in inputlist.split(','):
result = eval(i)
subjectscore.append(result)
# 请在此添加代码,填入for循环遍历学生分数的代码
# ********** Begin *********#
for subject in subjectscore:
score += subject
# ********** End **********#
print("第%d位同学的总分为:%d" % (student, score))
student +=1
第5关:迭代器
List = []
member = input()
for i in member.split(','):
result = i
List.append(result)
# 请在此添加代码,将List转换为迭代器的代码
# ********** Begin *********#
IterList = iter(List)
# ********** End **********#
while True:
try:
# 请在此添加代码,用next()函数遍历IterList的代码
# ********** Begin *********#
num = next(IterList)
# ********** End **********#
result = int(num) * 2
print(result)
except StopIteration:
break
不要求掌握哈
实验3-2 Python基础-循环结构
第1关:循环基础
import math
#第一题
# 请在下面编写代码
# ********** Begin ********** #
for num in range(1,3000):
if num %3 == 0 and num %5 == 0 and num %7 == 0:
print(num)
# ********** End ********** #
# 请不要修改下面的代码
print('\n***********************\n')
#第二题
s, y, i=1, 1, 1
# 请在下面编写代码
# ********** Begin ********** #
while y >= 10**(-7):
y *= 1/i
s += y
i +=1
# ********** End ********** #
# 请不要修改下面的代码
print("e值为{:.6f}".format(s))
第2关:计算最大公约数和最小公倍数
import math
x = eval(input("请输入一个整数"))
y = eval(input("请输入另一个整数"))
# l1 = []
# l2 = []
# for num in range(1,x*y):
# if x%num == 0 and y%num==0:
# l1.append(num)
# elif num%x == 0 and num%y == 0:
# l2.append(num)
# a = max(l1)
# b = min(l2)
a = math.gcd(x,y)
# ********** End ********** #
# 请不要修改下面的代码
print(f"\n最大公约数{a} 最小公倍数{x*y/a:.1f}")
以前写的史>-<
第3关:统计字符个数
a = input("请输入一串字符")
sz, zm, kg, qt = 0, 0, 0, 0
# 遍历输入字符串,统计每种字符的个数
for i in a:
if "a"<=i.lower()<="z":
zm += 1
elif "0"<=i<="9":
sz += 1
elif i.isspace():
kg += 1
else:
qt += 1
print("\n数字字符{}个,英文字符{}个,空格{}个,其他字符{}个".format(sz, zm, kg, qt))
字符串比大小也很重要哦
第4关:数据统计
print('"数据特征统计,请输入整数(1-100)"')
l1 = []
while True:
num = eval(input())
if num==0:
break
elif 1<=num<=100:
l1.append(num)
else:
print('输入错误')
c = len(l1)
s = sum(l1)
pj = s/c
maxx = max(l1)
minn = min(l1)
# ********** End ********** #
# 请不要修改下面的代码
print("\n共有数{}个,和{},平均值{},最大值{},最小值{}".format(c,s,pj,maxx,minn))
第5关:计算sinx
import math
x = eval(input('请输入'))
result = 0
term = x
n = 1
while abs(term) >= 1e-7:
result += term
n += 2
term = (-1) ** (n // 2) * x ** n / math.factorial(n)
print('\nsin({:.2f})={:.2f}'.format(x,result))
# ********** End ********** #
总结:
现在开始有些难度了,可能一次写出来的代码很难看,可以试着整理思路、优化