python--练习题记录(11-20)

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
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值