Python 习题

1、输入某年某月某日,判断这一天是这一年的第几天?

leap_year = [31,29,31,30,31,30,31,31,30,31,30,31]#闰年
common_year = [31,28,31,30,31,30,31,31,30,31,30,31]#平年
year = int(input("type the year:"))
month = int(input("type the month:"))
day = int(input("type the day:"))
sum = 0


if (year%4==0) and (year%100!=0) or (year%400==0):
    for i in range(0,month-1):
        sum +=leap_year[i]
    print("it's the {}th day".format(sum+day))
else:
    for i in range(0,month-1):
        sum +=common_year[i]
    print("it's the {}th day".format(sum+day))

2、输入三个整数x,y,z,请把这三个数由小到大输出。

x = int(input("type a number:"))
y = int(input("type a number:"))
z = int(input("type a number:"))
print(sorted([x,y,z]))

 3、九九乘法表。

for i in range(1,10):
for j in range(1,i+1): print("{}*{}={}\t".format(i,j,i*j),end="") print()

4、暂停一秒输出。

import time
import random

for i in range(10):
    print(i)
    time.sleep(random.randint(0,9))

5、找出10000以内的完美数。

def f(x):
    return x==sum([i for i in range(1,x) if x%i==0])

B = [i for i in range(10000) if f(i)]
print(B)

6、生成斐波拉契数列前20个数.

"""从第三项开始,每一项等于前面两项之和:f(n)=f(n-1)+f(n-2)"""
def fib(n):
    if n<=1:
        return n
    return (fib(n-1)+fib(n-2))

for i in range(20):
    print(fib(i),end=" ")

7、找出100以内所有素数。

for num in range(1,101):
    if num > 1:
        for i in range(2,num):
            if (num % i) == 0:
                break
        else:
            print(num,end=" ")

8、正整数反转。

def f(n):
    return int(str(n)[::-1])

 9:最大公约数和最小公倍数。

def f(x,y):
    """找到最小数"""
    if x>y:
        x,y = y,x
    """0<最大公约数<min(x,y)"""
    for i in range(x,0,-1):
        if x%i==0 and y%i==0:
            print("{},{}最大公约数是:{}".format(x,y,i))
            """最小公倍数=x*y//最大公约数"""
            print("{},{}最小公倍数是:{}".format(x,y,x*y//i))
            break
    

x =int(input("x="))
y =int(input("y="))
f(x,y)

 10、机选彩票。

from random import sample, randint

#双色球号码看做一个列表:[03 13 16 17 20 23 | 13]
def display(balls):
    for index, ball in enumerate(balls):
        if index == len(balls)-1:
            print("|", end=" ")
        # %02d:输出2位整数,右对齐。不够位数,左边补0
        print("%02d"  %ball, end=" ")
    #换行
    print()


def random_select():
    
    red_balls = [x for x in range(34)]#红色球号码池
   #sample(L,n):表示从序列L中选择6个不重复元素,以list形式返回结果。
    select_ball = sample(red_balls,6)
    select_ball.sort()
    select_ball.append(randint(1,16))
    return select_ball


def main():
    n = int(input("选多少注彩票:"))
    for i in range(n):
        display(random_select())

main()

11、跑马灯。

import os
import time


def main():
    content = '北京欢迎你为你开天辟地…………'
    while True:
        # 清理屏幕上的输出
        os.system('cls')  
        print(content)
        time.sleep(0.2)
        #跑马灯格式
        content = content[1:] + content[0]



main()

 12、时钟。

from time import sleep

class Clock():
    #时钟的三个属性:hour,minute,second,同时设置默认值=0
    def __init__(self,hour=0,minute=0,second=0):
        self.hour = hour
        self.minute = minute
        self.second = second
        
    #时钟的进制换算
    def run(self):
        self.second +=1
        if self.second==60:
            self.second=0
            self.minute +=1
            if self.minute==60:
                self.minute=0
                self.hour+=1
                if self.hour==24:
                    self.hour=0


    def show(self):
        return "%02d:%02d:%02d" %(self.hour, self.minute, self.second)




def main():
    clock = Clock()
    while True:
        print(clock.show())
        sleep(1)
        clock.run()
        
            
                
main()

13、计算平面上一个点到另一个点的距离,利用x,y坐标轴。

from math import sqrt
class Dot:

    def __init__(self,x0=0,y0=0):
        self.x0 =x0
        self.y0 =y0


    def move_to(self,x1,y1):
        self.x1=x1
        self.y1=y1


    def distance(self):
         return  sqrt((self.x1-self.x0)**2+(self.y1-self.y0)**2)
     



def main():
    dot = Dot()
    dot.move_to(3,4)
    print(dot.distance())


main()

 

posted @ 2020-05-31 16:20  jerrygogo  阅读(207)  评论(0编辑  收藏  举报