湖南大学python头歌实训 实验4:循环语句(一)

第二章-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 ********** #

总结:

现在开始有些难度了,可能一次写出来的代码很难看,可以试着整理思路、优化

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值