# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

# # 循环
# - 循环是一种控制语句块重复执行的结构
# - while  适用于广度遍历
# - for    开发中经常使用

# 广度遍历
# 深度遍历
#
#
# 堆
# 层层堆叠
# 栈
#
# 队列
# 先进先出。单向走

# ## while 循环
# - 当一个条件保持真的时候while循环重复执行语句
# - while 循环一定要有结束条件，否则很容易进入死循环
# - while 循环的语法是：
#
#     while loop-contunuation-conndition:
#
#         Statement

# ## 示例：
# sum = 0
#
# i = 1
#
# while i <10:
#
#     sum = sum + i
#     i = i + 1

# ## 错误示例：
# sum = 0
#
# i = 1
#
# while i <10:
#
#     sum = sum + i
#
# i = i + 1
# - 一旦进入死循环可按 Ctrl + c 停止

# ## EP：
# ![](../Photo/143.png)
# ![](../Photo/144.png)

# # 验证码
# - 随机产生四个字母的验证码，如果正确，输出验证码正确。如果错误，产生新的验证码，用户重新输入。
# - 验证码只能输入三次，如果三次都错，返回“别爬了，我们小网站没什么好爬的”
# - 密码登录，如果三次错误，账号被锁定
#

# +
import random
#for i in range(4):
 a = random.randint(97,122)
   # random.shuffle()
print(a)
    
    


# -

# ## 尝试死循环

# ## 实例研究：猜数字
# - 你将要编写一个能够随机生成一个0到10之间的且包括两者的数字程序，这个程序
# - 提示用户连续地输入数字直到正确，且提示用户输入的数字是过高还是过低

# ## 使用哨兵值来控制循环
# - 哨兵值来表明输入的结束
# - ![](../Photo/54.png)

# ## 警告
# ![](../Photo/55.png)

# ## for 循环
# - Python的for 循环通过一个序列中的每个值来进行迭代
# - range(a,b,k)， a，b，k 必须为整数
# - a: start
# - b: end
# - k: step
# - 注意for 是循环一切可迭代对象，而不是只能使用range

# range(0,10,2) 0-10 不长2
#
# dir（333）  存在 _iter_ 说明可以进行for循环
#
# 一切皆对象
#
#

# # 在Python里面一切皆对象

# ## EP:
# - ![](../Photo/145.png)

s = "sfweaefewefa"
i=0
while i<12 :
    print(s[i])
    i=i+1

# ## 嵌套循环
# - 一个循环可以嵌套另一个循环
# - 每次循环外层时，内层循环都会被刷新重新完成循环
# - 也就是说，大循环执行一次，小循环会全部执行一次
# - 注意：
# > - 多层循环非常耗时
#   - 最多使用3层循环

# ## EP：
# - 使用多层循环完成9X9乘法表
# - 显示50以内所有的素数

i = 0
j = 0
for i in range(9):
    i = i +1
    for j in range(9):
        j = j+1
        print(str(i*j)+' ',end='')
    print('\n')

# ## 关键字 break 和 continue
# - break 跳出循环，终止循环
# - continue 跳出此次循环，继续执行

# ## 注意
# ![](../Photo/56.png)
# ![](../Photo/57.png)

# # Homework
# - 1 
# ![](../Photo/58.png)

pos = 0
neg = 0
sum_ = 0
i=0
while True:
    num = eval(input(">>>"))
    if num == 0:
               break
    elif num > int(0):
               pos=pos+1
    elif num < 0:
               neg=neg+1
    sum_ = sum_ + num
    i=i+1
p = round(sum_/i,2)
print("正数:"+str(pos)+"\n负数:"+str(neg)+"\n总和:"+str(sum_)+"\n平均值:"+str(p))

# - 2
# ![](../Photo/59.png)

money=10000
i=0
j=0
money_1=money
money_4=0
s4=0
for i in range (10):
    money_1=money_1*(1+0.05) 
    money_4=money_1
    for j in range(4):
        s4=s4+money_4
        money_4=money_4*(1+0.05)
    print("第"+str(i+1)+"年起4年学费："+str(s4))
    s4=0
print("十年后学费："+str(money_1))

# - 3
# ![](../Photo/58.png)

# 同1

# - 4
# ![](../Photo/60.png)

j=0
for i in range(100,1000):
    if i%5==0 and i%6==0:
        print(str(i)+" ",end='')
        j=j+1
        if j%10==0:
            print('\n')

# - 5
# ![](../Photo/61.png)

n=0
while True:
    n=n+1
    if n**2 > 12000:
        print(n)
        break
n=0
while True:
    n=n+1
    if n**3 > 12000:
        print(n-1)
        break

# - 6
# ![](../Photo/62.png)

dk = eval(input("输入贷款额度"))
dk_0=dk
y = eval(input("输入贷款周期"))
r=0.05
while r <= 0.08:
    dk_0=dk_0*(1+r)
    m=dk_0/(y*12)
    r_=format(r,'.3%')
    m_=round(m,2)
    dk_1=round(dk_0,2)
    print(r_,m_,dk_1)
    r=r+0.01/8
    dk_0=dk

# - 7
# ![](../Photo/63.png)

# +
sum_1=0
sum_2=0
for i in range(50000,0):
    sum_1=sum_1+1/i
    print(sum_1)
print(sum_1)

for j in range(1,50001):
    sum_2=sum_2+1/j
print(sum_2)

# -

# - 8
# ![](../Photo/64.png)

sum_ = 0
for i in range(1,98,2):
    sum_=sum_+i/(i+2)
print(sum_)

# - 9
# ![](../Photo/65.png)

sum_ = 0
for i in range(10000,110000,10000):
    for j in range(1,2*i,2):
        sum_=sum_+(((-1)**((j+3)/2))/(j))*4
    print("i="+str(i)+":"+str(sum_))

# - 10 
# ![](../Photo/66.png)

sum_=0
for i in range(1,10000):
    for k in range(1,i):
        if i%k==0 :
            sum_=sum_+k
    if sum_ == i:
        print(i)
    sum_=0
        

# - 11
# ![](../Photo/67.png)

s=0
for n in range(1,8):
    for g in range(n+1,8):
        print(n,g)
        s=s+1
print('\n个数：'+str(s))

# - 12
# ![](../Photo/68.png)



StarcoderdataJupyterScriptsDedupFiltered