zoukankan      html  css  js  c++  java
  • Python 总结题目

    题例1

    # 打印如下长方形:
    ************ 
    *          *
    *          *
    ************
    # 打印如下长方形:
    print("*****************")
    print("*               *")
    print("*               *")
    print("*****************")

    题例2

    # 中国古代的秤是16两一斤,请问古代的216两是古代的几斤几两?
    #    写程序打印出来
    
    all_liang = 216
    jin = all_liang // 16  # 得到古代的斤
    liang = all_liang % 16 # 得到古代的两
    print(all_liang,"是古代的",jin,"",liang,"")

    题例3

    # 从凌晨0:0:0 计时,到现在已经过了 63320秒,请问现在是几时,几分,几秒,写程序打印出来
    #    (提示:用地板除和求余实现)
    
    # 计算时分秒
    h = 63320 // 60 // 60 # 小时
    f = 63320 // 60 % 60 # 分钟
    m = 63320 % 60 #
    print(h,"小时",f,"分钟",m,"") 

    题例4

    # 温度转换:
    # 摄氏温度 = 5.0 / 9.0 * (华氏温度-32)
    # 开氏温度 = 摄氏温度 + 273.15
    # 问:
    #    100华氏温度转为摄氏温度是多少度,转为开氏温度是多少度?
    
    # 方法1
    huashi = 100
    sheshi = 5.0 / 9.0 *(huashi - 32)
    print(huashi,"华氏度等于",sheshi,"摄氏度")
    kaishi = sheshi + 273.15
    print(huashi,"华氏度等于",kaishi,"开氏度")
    
    # 方法2
    # 稳定转换
    s = 5.0 / 9.0 * (100-32)
    k = s + 273.15
    s = s // 1     # s = round(s,1)
    k = k //1      # k = round(k,1)
    print("摄氏温度",s,"")
    print("开氏温度",k,"")

    题例5

    # 北京出租车计价程序
    #    收费标准:
    #    3公里以内收费13元
    #    基本单价 2.3元/公里(超出3公里以外)
    #    空驶费:超过15公里后,每公里加单价的50%空驶费(即:15公里后为 3.45元/公里)
    #    要求:
    #    输入公里数,打印出费用金额(以元为单位,精确到分,分以后四舍五入)
    
    km = float(input("请输入公里:"))
    if 1<= km <=3:
        print("收取费用:13元")
        elif km >15:
            d = (km-15)*3.45 + 13 + 2.3 * 12 # 超过15里必须涨价,没有超过15公里不涨价
            d = round(d,2)
            print("消费费用:",d,"")
        elif km<=0:
            print("请重新输入!")
        else:
            s = (km-3)*2.3 + 13 
            s = round(s,2)
            print("消费金额",s,"")

    题例6

    # 写程序,任意给出三个数,打印出三个数中最大的一个数
    
    a = int(input("请输入第一个数字:"))
    b = int(input("请输入第二个数字:"))
    c = int(input("请输入第三个数字:"))
    # 改进算法:
    # 先假设第一个最大,用变量绑定
    zuida = a 
    if b > zuida:
        zuida = b
    if c > zuida:
        zuida=c
    print("最大数是:",zuida)

    题例7

    # BMI 指数(Body Mass Index) 又称身体质量指数
    # BMI值计算公式: BMI = 体重(公斤)/身高的平方(米)
    #    如:
    #    一个69公斤的人,身高是173公分
    #    BMI =  69 / 1.73 ** 2  得 23.05
    #    标准表:
    #    BMI < 18.5 体重过轻
    #    18.5 <= BMI < 24 正常范围
    #    BMI > 24 体重过重
    #    输入身高和体重,打印出BMI的值,并打印出体重状况
    
    s = float(input("请输入身高:"))
    t = float(input("请输入体重:"))
    bmi = t / s ** 2
    bmi = round(bmi,2)
    if bmi <= 18.5:
        print(bmi,"体重过轻")
    elif 18.5<=bmi<24:
        print("BMI是:",bmi,"正常范围")
    else:
        bmi > 24
        print("BMI是:",bmi,"体重过重")

    题例8

    # 给出一个年份,判断是否为闰年并打印
    # 规则:
    #    每四年一闰,每百年不闰,每四百年有闰
    # 如:
    #    2016年 闰年
    #    2100年 不是闰年
    #    2400年 是闰年
    #    输入一个年份,打印这一年是否是闰年 
    
    y = int(input("请输入月份:"))
    # 方法1 
    # 能被400整除或能被4整除但不能被100整除
    if yue % 400 == 0 or (y % 4 == 0 and y % 100 !=0):
        print("是闰年")
    else:
        print("不是闰年")
    
    # 方法2
    if y % 400 == 0:
        print("是闰年")
    elif y % 100 ==0:
        print("不是闰年")
    elif y % 4 ==0:
        print("是闰年")
    else:
        print("不是闰年")
    
    # 方法3 
    z = yue % 4 == 0
    y = yue % 400 == 0
    x = yue % 100 != 0
    if (z and y)or x:
        print("是闰年")
    else:
        print("不是闰年")

    题例9

    # 输入一个字符串,把输入的字符串中的空格全部去掉,打印出处理后的字符串的长度和字符串的内容  
    
    s = input("请输入字符串:")
    d = s.replace(" ","")
    print("长度是:",len(d),"字符串内容:",d)

    题例10

    # 输入三行文字,让这三行文字在一个方框居中显示
    #    (注:不要输入中文)
    #    如输入:
    #    hello!
    #    I'm studing python!
    #    I like python!
    #    打印如下:
    #    +---------------------+
    #    |      hello!       |
    #    | I'm studing python  |
    #    |   I like python     |
    #    +---------------------+ 
    
    a = input("请输入第一个文字:")
    b = input("请输入第二个文字:")
    c = input("请输入第三个文字:")
    s = max(len(a),len(b),len(c))
    line = "+-"+"-"*s+"-+"
    print(line)
    print("| "+a.center(s)+" |")
    print("| "+b.center(s)+" |")
    print("| "+c.center(s)+" |")
    print(line)

    题例11

    # 1.打印0~30 范围内的所有偶数(能被2整除的数)
    # 方法1 i = 0 while i <=30: if i % 2 == 0: print(i,end=" ") i += 1 print() # 方法2 i = 0 while i <= 30: print(i,end=" ") i+=2 print()

    题例12

    # 2.写程序用while 语句生成如下的字符串,并打印出来
    # 1) "ABCD.............XYZ"
    # 2)  "AaBbCcDd.......XxYyZz"
    
    # 方法1
    i = ord("A")
    d = ord("a")
    while i <=ord("Z"):
        print(chr(i),end="")
        print(chr(d),end=" ")
        d += 1
        i += 1
    print()
    
    
    # 方法2
    d = ord("a")-1
    for x in range(ord("A"),ord("Z")+1):
        d = d + 1
        print(chr(x),end="")
        print(chr(d),end=" ")
    print()

    题例13

    # 3.写程序求:
    #    1/1 + 1/3 + 1/5 + 1/7 + .....+1/99 的和
    
    # 方法1
    i = 1
    he=0
    while i <=99:
        he = he + 1/i
        i = i + 2
    print(he)

    # 方法2
    s = 0
    fenmu = 1
    while fenmu <= 99:
      s += 1/fenmu
    fenmu += 2
    print(s)

    题例14

    # 4.写程序求:
    #  1/1 - 1/3 + 1/5 - 1/7 + ..... +(+1)1/(2*n-1)的和
    #  1)求当n取1000000时这个算式的和
    #  2)求当n取1000000时这个算式的和乘4时多少
    #     (答案:3.1415....)
    
    # 问题 1
    while i <= 1000000:
        he = he + 1/(2*i-1)*d
        d = d * (-1)
            i+=1
    print(he)
    print(4*he)
    
    # 问题 2
    s = 0 #累加和
    n = 1 #分母
    sign = 1 #符号
    while n <= 1000000:
        s += sign * 1 / (2*n-1)
        sign *= -1 # 改变符号的正负
        n += 1
    print(s)
    print(s*4) #3.1415

    题例15

    # 5.打印九九乘法表 (需用到循环嵌套)
    # 1x1=1
    # 1x2=2  2x2=4
    # 1x3=3  2x3=6 3x3=9
    # ....
    # 1x9=9....................... 9x9=81
    
    i = 1
    while i<=9:
        ji = 1
        while ji <=i:
            p = ji * i
            print(ji,"x",i,"=",p,end="   ")
            ji += 1
        print()
        i+=1
    
    # 第一重循环控制行数
    y = 1
    while y<=9:
        # 此处打印一行订内容,每行打印y个乘法
        x = 1
        while x <= y:
        #打印x *y的一列
            print("%dx%d=%-2d"%(x,y,x*y),end=" ")
            x += 1
        print() #换行
        y+=1

    题例16

    # 练习:
    #    1.输入一个整数,代表树干的高度,打印如下一颗“圣诞树”
    #     如:
    #    请输入:2
    #     打印
    #      * 
    #     ***
    #      * 
    #      *
    #     如:
    #    请输入:3
    #     打印
    #      *
    #     ***
    #    *****
    #      *
    #      *
    #      *
    
    
    # 方法1
    n = int(input("请输入一个整数:"))
    i = 1
    while i <= n:
        s = "*"*(2*i-1)
        d = (2*n-1)
        print(s.center(d))
        i+=1
    w = 1
    while w <=n:
        print("*".center(d))
        w += 1
    
    # 方法2
    n = int(input("请输入一个整数:")) 
    # 打印树冠部分
    d = (2*n-1)  # d 代表树冠最大下层叶子的星号个数
    for x in range(1,n+1): # x line 代表行号
        s = "*"*(2*x-1)
        print(s.center(d))
    # 打印树干部分
    for r in range(1,n+1):
        print("*".center(d))
    for _ in range(n):
        print(" "*(n-1)+"*")

    题例17

    # 2.写一个程序,任意输入一个整数,判断这个数是否是素数(prime)
    #    打印结果
    #    素质(也质数),只能被1和自身除的正整数
    #    如: 2 3 5 7 11 13 17 19 .....
    #    提示:
    #    用排除法,当判断x是否素数时,只要让x分别除以 2,3,4,5,...x-1,只要有一个能被整除,则x不是素数
    #    否则x为素数
    
    x = int(input("请输入一个整数:"))
    if x<2:
        print("不是素数")
    else:
        # 判断x不是素数
        for s in range(2,x):
        if x % s == 0: #整除       print("不是素数")       break # 能不能在此知道x是否为素数? else: print("是素数")

    题例18

    # 3. 输入三行,将这三行文字  保存于一个列表L中,并打印
    #     如:
    #        请输入:ABC
    #        请输入:123
    #        请输入:你好
    #    生成如下列表并打印:
    #    print(L)   # ["ABC","123","你好"] 
    
    # 方法 1
    l = []
    while True:
        n = int(input("请输入文字:"))
        if n < 0:
            break
        l += [n]
    print(l)

    题例19

    # 练习:
    # 1. 已知有一个字符串:
    # s = "100,200,300,500,800"
    # 将其转化为列表,列表内都为整数,即:
    # L = [100,200,300,500,800]
    
    s = "100,200,300,500,800"
    l = s.split(",")
    d =[]
    for x in l:
        d = d + [int(x)]
    print(d,end=" ")
    print()
    
    s = "100,200,300,500,800"
    l2 = s.split(",") #['100', '200', '300', '500', '800']
    l = [int(x)for x in l2]
    print(l)

    题例20

    # 2. 将一些数存于列表中,如:
    #    L = [1,3,2,1,6,4,2,.....,98,82]
    #    1)将列表中出现的数字存入到另一个列表L2中
    #     要求:
    #     重复出现多次的数只在L2列表中保留一份(去重)
    #    2)将列表中出现两次的数字存于L3列表中,在L3列表中只保留一份
    
    # 问1
    l = [1,3,2,1,6,4,2,98,82]
    l2 = []
    l3 = []
    for x in l:
        if l2.count(x)==0:
            l2.append(x)
        if l.count(x)==2 and l3.count(x)==0:
            l3 +=[x]
    print(l2)
    print(l3)
    
    
    # 问2
    l = [1,3,2,1,6,4,2,98,82]
    l2 =[]
    l3 = []
    for x in l:
        if x not in l2:
            l2.append(x)
        if l.count(x) == 2 and x not in l3:
            l3.append(x)
    print("L2 =",l2)
    print("L3 =",l3)

    题例21

    # 3. 生成前40个斐波那契数(Fibonacci)
    #    1 1 2 3 5 8 13 21
    #    要求: 将这些数保存在列表中,最后打印这些数
    #    注: 斐波那契数的前2个数为1 和 1 ,从第二个数起为前两个数相加之和
    
    
    # 方法1:
    l = []
    a = 0 # a 表示第一个数的前一个数
    b = 1 # b 表示第一个数
    while len(l)<40:
      # 每次把b加入到列表中
      l.append(b)
      # 在算出下一个fibonacci数,存于b中
      c = a+b #算数下一个数
      a = b # 把当前作为前一个数
      b = c # 把新算出来的c交给b
    print(l)
    print(len(l))
    
    # 方法2
    l=[1,1]
    while len(l) < 40:
        # 每次生成,加进列表上
        l.append(l[-1]+l[-2])
    print(l)
    print(len(l))

    题例22

    # 1.思考下面的程序的执行结果是什么?为什么?
    L = list(range(10))
    for x in L:
        L.remove(x)
        print("L= ",L) # 请问是空列表么?
    
    # 2.输入一些单词和解释,将单词作为键,将解释作为值,存入字典中,当输入单词或解释为空是停止输入,并打印这个字典
    #    然后,输入查询的单词,给出单词的内容,如果单词不存在则提示:
    #    查无此词
    
    d = {}  # 创建一个空字典准备存储数据
    while True:
        a = input("请输入单词:")
        if not a:  # 如果a空字符串,则退出
            break
        b = input("请输入解释:")
        if not b:
            break
        d[a] = b
        # 走到此处,说明a ,b都绑定了正确订值
    print(d)
    print("-------------以下开始查询单词---------------")
    while True:
        c = input("请输入查询单词:")
        if not c:
            break
        if c in d:
            print(d[c])
        else:
            print("查无单词")

    题例23

    # 3.<<学生信息管理项目>>
    # 输入任意个学生的姓名,年龄,成绩,每个学生的信息存入字典,然后放入列表中,每个学生的信息需要手动输入,当输入姓名为空时
    #    结束输入
    #    如:
    #    请输入姓名:tarena
    #    请输入年龄:20
    #    请输入成绩:99
    #    请输入姓名:name2
    #    请输入年龄:18
    #    请输入成绩:88
    #    请输入姓名:<回车>  结束输入
    #    内部存储格式如下:
    #    [{"name":"tarena","age":20,"score":99}
    #    {"name":"tame","age":18,"score":88}]
    #    打印上述此列表
    #    然后再用表格的形式打印学生信息如下:
    #    +-------------+---------+--------+
    #    |    姓名      |   年龄  |   成绩  |
    #    +-------------+---------+--------+
    #    |  tarena     |   20    |   99   |
    #    +-------------+---------+--------+
    #    |   name2     |   18    |   88   |
    #    +-------------+---------+--------+
    
    
    l = [] #创建一个列表,准备存放学生数据订字典
    while True:
        a = input("请输入名字:")
        if not a: #如果用户输入字符串就结束输入
            break
        b = int(input("请输入年龄:"))
        c = int(input("请输入成绩:"))
        t = {}       # 一定要每次创建一个新的字典
        # t["名字:"],t["年龄:"],t["成绩:"] = (a,b,c)
        t["name"] = a
        t["age"] = b
        t["score"] = c
        l.append(t)   #把生成的字典放在列表中
    print(l)
    print("+ "+"-"*30 +" +")
    print("|"+"姓名".center(8)+"|"+"年龄".center(8)+"|"+"成绩".center(8)+"|")
    print("+ "+"-"*30 +" +")
    for i in l:
        sa = i["name"].center(10)
        sb = str(i["age"]).center(10)
        sc = str(i["score"]).center(10)
        print("|"+sa+"|"+sb+"|"+sc+"|")
    print("+ "+"-"*30+" +")

    题例24

    # 1.定义两个函数:
    #    sum3(a,b,c) 用于返回三个数的和
    #    pow3(x)          用于返回x的三次方(立方)
    #    用以上函数的计算:
    #    1.计算1的立方 + 2的立方+3的立方的和
    #    2.计算 1 + 2 +3 的和的立方
    #    即:
    #    1**3+2**3+3**3 和 (1+2+3)**3
    
    def sum3(a,b,c):
        x = a + b+c
        return x 
    def pow3(x):
        d = x**3
        return d 
    printsun = sum3(pow3(1),pow3(2),pow3(3))
    print(printsun)
    print(pow3(sum3(1,2,3)))

    题例25

    # 2.写一个函数 get_chinese_char_count(s),此函数功能是给定一个字符串是s,返回这个字符串中中文字符的个数
    #    注:中文的编码范围是:0x4E00~0x9FA5
    
    
    def get_chinese_char_count(a):
      i = 0
      for x in a:
        if 0x4E00<=ord(x)<=0x9FA5:
          i+=1
        return i
    s = input("请输入中英文混合的字符串:")
    print("中文字符的个数是:",get_chinese_char_count(s))

    题例26

    # 3.改写之前的学生信息管理程序:
    # 用两个函数来封装的代码块
    #    函数1:input_student()  # 返回学生信息字典的列表
    #    函数2:output_student() #打印学生信息的表格
    
    # def input_student():
    #    ...此处自己实现
    # def output_student(L):
    #    ...此处自己实现

    infos = input_student() print(infos) # 打印列表[{...},{...}] output_student(infos) # 根据实参infos打印表格 def input_student(): # 打印死循环键盘输出,存入字典,放在列表 l = [] #创建一个列表,准备存放学生数据订字典 while True: a = input("请输入名字:") if not a: #如果用户输入字符串就结束输入 break b = int(input("请输入年龄:")) c = int(input("请输入成绩:")) t = {}#一定要每次创建一个新的字典 t["名字:"],t["年龄:"],t["成绩:"] = (a,b,c) l.append(t) # 把字典放在列表 print(l) return l
    def output_student(l): # 打印表格以及输出 print("+ "+"-"*30 +" +") print("|"+"姓名".center(8)+"|"+"年龄".center(8)+"|"+"成绩".center(8)+"|") print("+ "+"-"*30 +" +") for i in l: x = get_chinese_char_count(i["名字:"]) sa = i["名字:"].center(10-x) sb = str(i["年龄:"]).center(10) #转字符串 sc = str(i["成绩:"]).center(10) #转字符串 print("|"+sa+"|"+sb+"|"+sc+"|") print("+ "+"-"*30+" +") def get_chinese_char_count(s): # 计算中文输入的长度 i = 0 for x in s: if 0x4E00<=ord(x)<=0x9FA5: i+=1 return i # 改变量 infos = input_student() #把字典定义个变量 output_student(infos) #表格调用字典

    题例27

    # 1.算出100~999 以内的水仙花数(Narcissistic number)水仙花数是指百尾3次方加上十位的三次方加上各位的3次方
    #    等于原数的整数
    #    例如: 153 = 1**3 + 5**3 + 3**3
    #    答案:  153,370,...
      
    # 方法1
    for x in range(100,1000):
        # 拆出百位,十位,个位
        bai = x // 100 #百位
        shi = x // 10 % 10 #十位
        ge = x % 10 #个位
        if ge ** 3+ shi ** 3 +bai ** 3 == x:
            print(x)#满足条件的水仙花数
    
    # 方法2
    # 将数字转为字符串
    for x in range(100,1000):
        s = str(x)
        bai = int(s[0])
        shi = int(s[1])
        ge = int(s[2])
        if  x == bai ** 3 + shi ** 3 +ge ** 3:
            print(x)
    
    # 方法3
    for bai in range(1,10):
        for shi in range(0,10):
            for ge in range(10):
                x = bai * 100  + shi *10 +ge
                if x  ==bai ** 3 + shi ** 3 +ge ** 3:
                    print(x)

    题例28

    # 2.完全数:
    #    1+2+3=6(6为完全数)
    #    1,2,3都为6的因数(能被一个数x整除的数为y,则y为x的因数)
    #    1 x 6 = 6
    #    2 x 3 = 6
    #    完全数是指除自身以外的所有因数之和相加等于自身的数
    #    求4~5个完全数,并打印
    #    答案:
    #    6
    #    28  D
    #    496
    #    ...
    
    
    
    def is_perfect_number(x):
        # """此函数判断x是否为完全数,如果是返回True,否则返回False"""
        l = [] #创建一个列表,用来存放x所有的因数
        for i in range(1,x):
            if x % i ==0: #整数了,i则一定是x的因数
                l.append(i)
        if sum(l)==x: # 是完全数
            return True
        return False
    
    def main():
        i = 2
        while True:
            # 如果i是完全数,则打印i的值
            if is_perfect_number(i):
                print(i)
            i+=1
    
    main()

    题例29

    # 3.写一个myrange()函数,参数可以传1~3个,实际意义同range函数规则相同,此函数返回符合range(...)函数规则的列表
    #    如:
    #    L = myrange(4)
    #    print(L) # [0,1,2,3]
    #    L = myrange(4,6)
    #    print(L) #[4,5]
    #    L = myrange(1,10,3)
    #    print(L)   #[1,4,7]
        
    
    
    def myrange(start,stop=None,step=None):
        if stop is None: # if not stop:
            stop = start
            start = 0
        if step is None:
            step = 1
        # 开始,结束和步长都已确定
        # seturn [x for x in range (start,stop,step)]
        if step > 0: # 正向
            l = []
            while start < stop:
                l.append(start)
                start += step
            return l
        elif step < 0: # 反向
            l =[]
            while start > stop:
                l.append(start)
                start += step
            return l
    
    
    l = myrange(4)
    print(l)
    l =myrange(4,6)
    print(l)
    l = myrange(1,10,3)
    print(l)
    l = myrange(10,1,-2)
    print(l)

    题例30

    # 1. 写一个函数mysum(n),此函数用来计算
    #    1+2+3+4+....+n 的和
    #   (要求:不布允许调用sum)
    #  如:
    #    print(mysum(100)) #5050
    #    print(mysum(4))#10
    
    
    def mysum1(n):
        s = 0
        for x in range(1,n+1):
            s = s+x
        return s 
    print(mysum1(100))
    print(mysum1(4))
    
    def mysum2(n):
        return sum(range(1,n+1))
    print(mysum2(100))
    print(mysum2(4))

    题例31

    # 2.写一个函数myfac(n)  来计算n!(n的阶乘)
    #  n!=1*2*3*4*...*n
    #  如:
    #  print(myfac([5]))  #120
    
    
    # 3.写一个函数计算
    #  1+ 2**2 + 3**3 + 4**4...+n**n的和
    # (n给个小点数来进行测试)   
    
    # 1+ 2**2 + 3**3 +...+ n**n的和
    # 方法1
    def mysum(n):
        s = 0
        for x in range(1,n+1):
            s = s + x**x
        return s
    print(mysum(3))
    
    # 方法2
    def mysum(n):
        s = sum([x**x for x in range(1,n+1)])
        return s 
    print(mysum(3))
    
    # 方法3
    def mysum(n):
        return sum(map(lambda x:x**x,range(1,n+1)))
    print(mysum(3))

    题例32

    # 1.编写函数fun,其功能是计算并返回下列多项式的和
    # Sn = 1 + 1/1! + 1/2! + 1/3! +  ... 1/n!
    #  (建议用数学模块中的math.factorial(x)函数)
    # 求当 n = 20时,Sn的值
    
    
    # 方法1
    def fum(n):
        from math import factorial as fac
        s = 0
        for x in range(0,n+1):
            s = s + 1/(fac(x))
        return s
    print(fum(20))
    
    
    # 方法2
    def fum(n):
        from math import factorial as fac
        return sum([1/fac(x) for x in range(n+1)])
    print(fum(20))
    
    # 方法3
    def fum(n):
        from math import factorial as fac
        return sum(map(lambda x: 1/fac(x),range(n+1)))
    print(fum(20))

    题例33

    # 2.写一个程序,以电子时钟格式打印时间:
    # 格式为:
    #  HH:MM:SS
    
    #  2.写一个程序,以电子时钟格式打印时间:
    def show_time():
        import time
        while True:
            n = time.time()
            s = time.localtime(n)
            # t = s[3],s[4],s[5]
            # print("%02d:%02d:%02d" % t,end="
    ")
            print("%02d:%02d:%02d" % s[3:6],end="
    ")
            time.sleep(1)
    show_time()

    题例34

    # 3.编写一个闹钟程序,启动时设置定时时间,到时间后打印一句“时间到!”然后程序退出!
    
    a = int(input("请输入小时:"))
    b = int(input("请输入分钟:"))
    c = int(input("请输入分秒:"))
    import time
    while True:
        n = time.time()
        s = time.localtime(n)
        if s[3] ==a and s[4]==b and s[5]==c:
            print("时间到!")
            break
        else:
            print("%02d:%02d:%02d" % (s[3:6]),end="
    ")
            time.sleep(1)
    
    def alarm(hour,minute):
        import time
        while True:
            t = time.localtime()  #获取当前时间
            print("%02d:%02d:%02d" % (t[3:6]),end="
    ")
            time.sleep(0.1)
            # if t[3] == hour and t[4] == minute:
            if t[3:5] == (hour,minute):
                print("时间到!!!")
                return
     a = int(input("请输入小时:"))
    b = int(input("请输入分钟:"))
    alarm(a,b)

    题例35

    # 1. 随机生成6位密码:
    #    可以作为密码的字符有:
    #    a-z,A-Z,0-9
    #    随机生成一个6位的密码
    
    # 方法1
    import random as r
    cord = ("qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789")
    for s in range(0,6):
        d = r.randint(0,len(cord)-1)
        c = cord[d]
        print(c,end="")
    print()
    
    # 方法2
    import random
    char = [chr(x) for x in range(65,65+26)]
    char += [chr(x) for x in range(97,97+26)]
    char += [str(x) for x in range(10)]
    passwd =" " 
    for d in range(6):
        passwd += random.choice(char)
    print(passwd)

    题例36

    # 2. 模拟斗地主发牌,牌共54张
    # 种类:
    # 黑桃("u2660"),梅花("u2663"),方块("u2665"),红桃("u2666")
    # 数字:
    # A2-10JQK
    #    三牌:大小王
    #    三个,每人发17张牌,底牌留三张
    #    输入回车,打印第一个人的17张牌
    #    输入回车,打印第二个人的17张牌
    #    输入回车,打印第三个人的17张牌
    #    输入回车,打印3张底牌
    
    
    print("欢迎来到发牌程序")
    import random
    import time
    r = ["大王","小王"] #容器
    pai = ["A","J","Q","K"]
    shu = ["u2660","u2663","u2665","u2666"] 
    for x in range(2,10+1):
        r.append(shu[0]+str(x))
        r.append(shu[1]+str(x))    
        r.append(shu[2]+str(x))
        r.append(shu[3]+str(x))
    for y in range(1,4+1):
        r.append(shu[0]+pai[0])
        r.append(shu[1]+pai[1])
        r.append(shu[2]+pai[2])
        r.append(shu[3]+pai[3])
    time.sleep(1)
    print(r)
    
    print("--------------------------------------------------")
    random.shuffle(r)
    s1 = r[0:17]
    s2 = r[17:34]
    s3 = r[34:51]
    s4 = r[51:]
    
    input("第一个人牌")
    print(s1)
    input("第二个人牌")
    print(s2)
    input("第三个人牌")
    print(s3)
    input("底牌")
    print(s4)
    
    
    # 方法2
    poke = ["大王","小王"]
    kinds = ["u2660","u2663","u2665","u2666"]
    numbers =["A"]
    numbers += [str(x)for x in range(2,11)]
    numbers += list("JQK")
    # for k in kinds:
    #     for n in numbers:
    #         poke.append(k+n)
    poke += [k+n for k in kinds for n in numbers]
    print(poke)
    assert len(poke)==54,"出错"
    # 打乱
    poke2 = poke.copy()
    import random
    random.shuffle(poke2)
    player1 = poke2[:17]
    player2 = poke2[17:34]
    player3 = poke2[34:51]
    base = poke2[51:]
    
    input()
    print("打印第一个人的17张牌:",player1)
    input()
    print("打印第二个人的17张牌:",player2)
    input()
    print("打印第三个人的17张牌:",player3)
    input()
    print("三张底牌:",base)

    题例37

    # 1. 一个球从100米高空落下,每次落地后反弹高度为原高度的一半,再落下,写程序算出:
    #    1) 皮球在第10次落地后反弹的高度
    #    2) 皮球在第10次落地反弹后共经历多少米路程
    
    s = 100
    lucheng = 0
    for x in range(10):
        s = s / 2 
        lucheng = lucheng + (s+s/2)*2
    print(s)
    print(lucheng)
    
    def get_last_height(height,times):
        """height 原来的高度
           times  为反弹次数"""
        for _ in range(times):
            height /= 2 # 每次反弹高度为原高度的一半
        return height
    print("皮球从100米高度落下反弹十次后高度为:",get_last_height(100,10))
    
    def get_distance(height,times):
        meter = 0 # 用来记录总路程
        for _ in range(times):
            # 累加下落过程的路程
            meter += height
            height /=2 # 计算返回后的高度
            # 累加反弹之后的路程
            meter += height
        return meter
    print("皮球从100米高度落下反弹十次后的总路程为:",get_distance(100,10))

    题例38

    # 2.分解质因数,输入一个正整数,分解质因数
    # 如:
    #    输入: 90
    #    打印:
    #    90 = 2 * 3 * 3 * 5
    #    (质因数是指最小能被原数整数的素数(不包括1))
    
    print("----------"*10)
    # 方法1 s
    = int(input("请输入一个整数:")) n=s if s ==2: print(s) else: l = [] while True: for x in range(2,s+1): if s % x==0: s = s // x l.append(str(x)) break if s==1: break a=" * ".join(l) print(n,"=",a)
    # 方法2(封装)
    def get_zhiyin_list(x): """此函数返回x的质因数的列表 如x = 90 返回[2,3,3,5] """ l =[] #准备存放质因数 while x > 1: # 每次求取一个质因数,然后放在l中 for i in range(2,x+1): if x % i ==0: # i一定质因数 l.append(i) x = int(x/i) break # 进入下一次while return l x = int(input("请输入正整数:")) l = get_zhiyin_list(x) l2 = (str(x)for x in l) print(x,"=","*".join(l2))
  • 相关阅读:
    推荐Windows下SVN服务器端和客户端工具软件
    QT的一些小知识
    Qt
    Qt
    ADB
    HTTP
    Python
    项目附
    项目
    架构
  • 原文地址:https://www.cnblogs.com/Axianba/p/11133898.html
Copyright © 2011-2022 走看看