python基础练习1

python基础练习1

python的进制输出:

bin() # -> 0b
int() #
hex() # -> 0x
oct() # -> 0o

4.键盘输入账号密码,如果正确提示登录成功,如果不匹配,则输出登录失败,
第5次提示登录失败超过次数限制,程序结束(用户名admin秘密admin)

for x in range(5):
    print("请输入用户名、密码,只有5次机会!")
    user = input('输入用户名:')
    mima = input("输入密码:")

    if user=='admin' and mima=='admin':
        print("登录成功!")
        break

else:
    print("登录超过5次!")

附加:加上超时——10秒内

知识点:time.time() ,time.sleep(second)

import time

flag=1

while flag:
    start_time=time.time()
    for x in range(5):
        print("请输入用户名、密码,只有5次机会,请10秒内完成!")
        user = input('输入用户名:')
        mima = input("输入密码:")

        if time.time()-start_time>10:
            print("登录超时!")
            break

        if user=='admin' and mima=='admin':
            print("登录成功!")
            flag=0
            break

    if flag:
        print("登录失败!请5秒后再尝试登录!")
        time.sleep(5)

5.2006年培养学员8万人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人

知识点:科学计数 8e4=8*10^4

students=8e4
year_rate=1.25
year=0
while True:
    year += 1
    students_sum=students*(year_rate**year)
    print(round(students_sum))
    if students_sum>=2e5:
        print(2006+year)
        break

附加:使用matplotlib库 打印图表

import matplotlib.pyplot as plt

students=8e4
year_rate=1.25
year=0
stu_years=[]
years=[]
while True:

    students_sum=students*(year_rate**year)
    stu_years.append(round(students_sum))
    years.append(2006+year)
    if students_sum>=2e5:
        print(years[-1])
        break
    year += 1

plt.style.use('seaborn')
fig, ax =plt.subplots()
ax.plot(years,stu_years,linewidth=3)
plt.xlim(2006,years[-1])

ax.set_title("stu in every year",fontsize=24)
ax.set_xlabel("year",fontsize=14)
ax.set_ylabel("stu_sum",fontsize=14)

plt.show()

6.在马克思手稿中有一道趣味的数学问题:一共有30个人,可能包括男人,女人和小孩。他们在一家饭馆吃饭共花了50先令,其中每个男人花3先令,每个女人花2先令,每个小孩花1先令。请问男人、女人和小孩各几人?请编写一个程序来计算。
M + W + C = 30 M+W+C=30 M+W+C=30

3 M + 2 W + C = 50 3M+2W+C=50 3M+2W+C=50

M ∈ [ 0 , 16 ] , W ∈ [ 0 , 25 ] , C ∈ [ 0 , 30 ] M\in[0,16],W\in[0,25],C\in[0,30] M[0,16],W[0,25],C[0,30]

for m in range(1+50//3):
    for w in range(1+50//2):
        for c in range(1+30):
            num=m+w+c
            shillings=3*m+2*w+c
            if num==30 and shillings==50:
                print(f"there are {m} men, {w} women, {c} children")

7.李先生岁数的平方与他的夫人的岁数之和是1053,而他的夫人的岁数的平方与他的岁数之和是873,请编写程序计算李先生及其夫人的岁数各是多少
L i ( < 1 053 ) ∈ ( 0 , 32 ] , F u ( < 8 73 ) ∈ ( 0 , 29 ] Li(<\sqrt 1053)\in(0,32],Fu(<\sqrt 873)\in(0,29] Li(<1 053)(0,32],Fu(<8 73)(0,29]

for fu in range(29):
    for li in range(32):
        li_sum= li**2 + fu
        fu_sum= li + fu**2
        if li_sum==1053 and fu_sum==873:
            print(f'李先生岁数:{li},夫人岁数:{fu}')
         

方法2:使用math库

import math
for fu in range(1+math.isqrt(873)):
    for li in range(1+math.isqrt(1150)):
        li_sum= li**2 + fu
        fu_sum= li + fu**2
        if li_sum==1053 and fu_sum==873:
            print(f'李先生岁数:{li},夫人岁数:{fu}')

8.求1-100之内的所有素数

注意:1不算素数

prime_num=100
for n in range(2,1+prime_num):
    for i in range(2,n):
        if n%i==0 :
            break
    else:
        print(n)

方法2:

sushu=[]
prime_range=int(input("请写入素数范围:"))

for n in range(2,prime_range):
    for i in range(2,n):
        if n%i==0 :
            break
    else:
        sushu.append(n)

print(f"1~{prime_range}一共有{len(sushu)}个素数")
for num in sushu:
    print(num)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值