python基础练习1
- python基础练习1 推荐度:
- 相关推荐
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("登录成功!")breakelse:print("登录超过5次!")
附加:加上超时——10秒内
知识点:time.time() ,time.sleep(second)
import timeflag=1while flag:start_time=time.time()for x in range(5):print("请输入用户名、密码,只有5次机会,请10秒内完成!")user = input('输入用户名:')mima = input("输入密码:")if time.time()-start_time>10:print("登录超时!")breakif user=='admin' and mima=='admin':print("登录成功!")flag=0breakif 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 += 1students_sum=students*(year_rate**year)print(round(students_sum))if students_sum>=2e5:print(2006+year)break
附加:使用matplotlib库 打印图表
import matplotlib.pyplot as pltstudents=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])breakyear += 1plt.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+cshillings=3*m+2*w+cif 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 + fufu_sum= li + fu**2if 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 + fufu_sum= li + fu**2if 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 :breakelse: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 :breakelse:sushu.append(n)print(f"1~{prime_range}一共有{len(sushu)}个素数")
for num in sushu:print(num)