python小白,为了提高代码能力,打算做100道练习题,写博客记录自己的学习之路,希望不要半途而废,加油加油加油!
11.暂停一秒输出。
import time
for i in range(1,5):
print(i)
time.sleep(1)
12.暂停一秒输出,并格式化当前时间。
time
import time
t1=time.time()#返回当前时间的时间戳(1970纪元后经过的浮点秒数)
print(t1,type(t1))
a1=time.localtime(t1)
print(a1,type(a))
print(a1.tm_year)
time.sleep(1)
b1=time.strftime('%Y-%m-%d %H:%M:%S',a1)
print(b1,type(b1))
#######输出
1572503898.3158512 <class 'float'>
time.struct_time(tm_year=2019, tm_mon=10, tm_mday=31, tm_hour=14, tm_min=38, tm_sec=18, tm_wday=3, tm_yday=304, tm_isdst=0) <class 'str'>
2019
2019-10-31 14:38:18 <class 'str'>
date
import datetime
c=datetime.date(2019,9,20)
d=c.strftime('%d/%m/%Y')
e=datetime.datetime.strptime(d,'%d/%m/%Y')
print(c,type(c),d,type(d))
print(e,type(e))
####2019-09-20 <class 'datetime.date'> 20/09/2019 <class 'str'>
####2019-09-20 00:00:00 <class 'datetime.datetime'>
个人更喜欢用datetime进行字符串与datetime类之间的转换:
strftime()将datetime类的日期转换为字符串
strptime()将字符串日期转换为datetime类,之后可进行年月日加减等
import datetime
t1=datetime.datetime.now()
a1=datetime.datetime.strftime(t1,'%Y-%m-%d')
b1=datetime.datetime.strptime('2018-08-09','%Y-%m-%d')
print(t1,type(t1))
print(a1,type(a1))
print(b1,type(b1))
######输出
2019-10-31 14:46:24.548865 <class 'datetime.datetime'>
2019-10-31 <class 'str'>
2018-08-09 00:00:00 <class 'datetime.datetime'>
13.题目:判断101-200之间有多少个素数,并输出所有素数。
import math
for i in range(101,200):
x=int(math.sqrt(i))+1
for j in range(2,x+1):
if i%j==0:
break
else:
if j<x:
continue
else:
print(i,end=',')
#输出:101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,
1.break 用于跳出循环,break所在的循环体已经结束。
2.continue 中断循环中的迭代,然后继续循环中的下一个迭代,continue所在的循环体并没有结束。
14.题目:输出指定格式的日期。
import datetime
a=datetime.datetime.today()
b=datetime.datetime.strftime(a,'%d/%m/%Y')
print(a,type(a),b,type(b))
#2019-10-31 15:56:55.686195 <class 'datetime.datetime'> 31/10/2019 <class 'str'>
15.题目 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
I=input()
I=float(I)
if I>=90:
grade='A'
elif I<60:
grade='C'
else:
grade='A'
print(grade)
16.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
I='2214_42 dkf1232()asd@'
s=list(I)
alpha_num=0
digit_num=0
space_num=0
other_num=0
for i in range(len(s)):
if s[i].isalpha():
alpha_num+=1
elif s[i].isdigit():
digit_num+=1
elif s[i]==' ':
space_num+=1
else:
other_num+=1
print(alpha_num,digit_num,space_num,other_num)#6 10 1 4
两个函数:isalpha(),isdigit()注意无参数
17.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
a=input('请输入a的值:')
b=input('请输入数字个数b: ')
s=[]
for i in range(1,int(b)+1):
s.append(str(a)*i)
s=[int(i) for i in s]
print(sum(s))
a=input('请输入a的值:')
b=input('请输入数字个数b: ')
a=int(a)
s=[]
for i in range(1,int(b)+1):
x=a
for j in range(1,i):
x=x+a*10**j
s.append(x)
print(sum(s))
18.题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。
def factorazition(n):
if n<2:
print(n,end='')
for i in range(2,n+1):
if n%i==0:
print(i,'*',end='')
factorazition(int(n/i))
break
n=int(input('请输入正整数n='))
print(n,'=',end='')
factorazition(n)
#请输入正整数n=90
#90 =2 *3 *3 *5 *1
递归思路:1.写出函数2找到递归结束条件3找到递归关系
(总是学不会递归,幸好昨天晚上睡觉时候看到一篇讲递归的博客,就是三步,今天就写出来了,开心)
19.题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
明确完数:它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
import math
for i in range(2,1000):
factor=[1]
for j in range(2,int(math.sqrt(i)+1)):
if i%j==0:
factor.append(j)
factor.append(int(i/j))
if i==sum(factor):
print(i,factor)
#6 [1, 2, 3]
#28 [1, 2, 14, 4, 7]
#496 [1, 2, 248, 4, 124, 8, 62, 16, 31]
20.题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
h0=100
s=h0
for i in range(1,11):
h=h0/pow(2,i)
s=s+h0/pow(2,i-1)
print('高度',h,'路程',s)
#高度 0.09765625 路程 299.8046875