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(<1053)∈(0,32],Fu(<873)∈(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)