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

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

积累还是有用的,这种现在就是一眼丁真了

总结:

现在的东西总算正常了,值得一写的

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值