资讯专栏INFORMATION COLUMN

python第一阶段习题

smallStone / 3422人阅读

摘要:按照下面的格式打印的数字以及每个数的平方几何级数和阶乘。分方法一设计一个函数,统计一个字符串中出现频率最高的字符及其出现次数分。分筒条万王宝强贾乃亮马伊琍陈羽凡洗牌发牌第一个人多发一张牌的牌是筒条万筒筒条条万万筒条万

按照下面的格式打印1~10的数字以及每个数的平方、几何级数和阶乘。(5分)

数字 平方 几何级数 阶乘
1 1 2 1
2 4 4 2
3 9 8 6
4 16 16 24
5 25 32 120

print("|{0:<18}|{1:<18}|{2:<18}|{3:<18}|".format("数字", "平方", "几何级数", "阶乘"))
print("|{0:<20}|{1:<20}|{2:<20}|{3:<20}|".format("----", "----", "----", "----"))
number4 = 1
for i in range(1, 13):
    number = i
    number2 = i ** 2
    number3 = 2 ** i
    number4 *= i
    print("|{0:<20}|{1:<20}|{2:<20}|{3:<20}|".format(number, number2, number3, number4))


from math import factorial


def main():
    print("%-12s%-12s%-12s%-12s" % ("s", "s", "s", "s"))
    for num in range(1, 11):
        print("%12d%12d%12d%12d" % (num, num ** 2, 2 ** num, factorial(num)))
# %d前加数字表示间隔的字符数

if __name__ == "__main__":
    main()



2.设计一个函数,
生成指定长度的验证码(由数字和大小写英文字母构成的随机字符串)。(5分)

import random
import string


def id_code():
    long = int(input("请输入验证码的长度"))
    str1 = ""
    for i in range(long):
        str1 += random.choice(string.ascii_letters + string.digits)
    print(str1)

id_code()


3.设计一个函数,统计字符串中 英文字母和数字各自出现的次数。(10分)

num1 = 0
num2 = 0
str1 = "@djjkjk9565628jjjlkaskdl--"
import string
for i in str1:
    if i in string.digits:
        num1 += 1
    if i in string.ascii_letters:
        num2 += 1
print(num1,num2)


4.设计一个函数,判断传入的整数列表
(要求元素个数大于2个)中的元素能否构成等差数列。(10分)

def judge():
    list1.sort()
    for i in range(len(list1)-2):
        if (list1[i+1]-list1[i]) != (list1[i+2]-list1[i+1]):
            return False
    return True

list1 = [1,2,3,5]
print(judge())

5.设计一个函数,计算字符串中所有数字序列的和。(10分)

import re

str1 = "asb123dasjk-7f078"
list1 = re.findall(r"-d+|d+",str1)
s = 0
for i in list1:
    s += int(i)
print(s)

6.设计一个函数,对传入的字符串(假设字符串中只包含小写字母和空格)进行加密操作,
加密的规则是a变d,b变e,c变f,……,x变a,y变b,z变c,空格不变,返回加密后的字符串。(10分)

def change(str1):
    str2 = ""
    for i in str1:
        if i != " ":   # a 97   z 122
            str2 += chr(ord("a") + (ord(i) -ord("a") + 3) % 26 )
        else:
            str2 += " "
    return str2

print(change("abcd  xyz"))


7.设计“跳一跳”游戏的计分函数,“跳一跳”游戏中黑色小人从一个方块跳到另一个方块上会获得1分,
如果跳到方块的中心点上会获得2分,连续跳到中心点会依次获得2分、4分、6分、……。
该函数传入一个列表,列表中用布尔值True或False表示是否跳到方块的中心点,函数返回最后获得的分数。(10分)

方法一
str1 =""
list1 = [True, True, True, False, False, False, True]

num1 = list1.count(False)
num2 = 0
for i in list1:
    str1 += str(i)
list2 =  str1.split("False")
for i in list2:
    num2 +=i.count("True")*(i.count("True")+1)

print(num2+num1)



list1 = [True, True, True, False, False, False, True]

score = 0
rate = 2
for i in list1:
    if i:
        score += rate
        rate += 2
    else:
        score += 1
        rate = 2
print(score)

8.设计一个函数,统计一个字符串中出现频率最高的字符及其出现次数(20分)。

def count(str):
    dict={}
    for i in str:
        if i in dict:
            dict[i]+=1
        else:
            dict[i]=1
    max_keys = []
    max_value = 0
    for key, value in dict.items():
        if value > max_value:
            max_value = value
            max_keys.clear()
            max_keys.append(key)
        elif value == max_value:
            max_keys.append(key)
    return max_keys, max_value

print(count("aabbaaccbb"))  # (["a", "b"], 4)



9.设计一个函数,传入两个代表日期的字符串,
如“2018-2-26”、“2017-12-12”,计算两个日期相差多少天。(20分)。

def month_to_day(m):
    s = 0
    for i in range(1, m):
        if i == 2:
            s = s+29 if (i % 4 == 0 and i % 100 != 0) or (i % 400 == 0) else s+28
        else:
            s = s+30 if i == 4 or i == 6 or i == 9 or i == 11 else s+31
    return s


def date_to_day(date1, date2):
    list1 = date1.split("-")
    list2 = date2.split("-")
    y1,m1,d1,y2,m2,d2 = int(list1[0]),int(list1[1]),int(list1[2]),int(list2[0]),
                        int(list2[1]),int(list2[2])
    sum = 0
    if y1 > y2:
        y1, y2 = y2, y1
        m1, m2 = m2, m1
        d1, d2 = d2, d1
    if y1 == y2 and m1 > m2:
        m1, m2 = m2, m1
        d1, d2 = d2, d1
    if y1 == y2 and m1 == m2 and d1 > d2:
        d1, d2 = d2, d1
    print(y1,m1,d1,y2,m2,d2)

    for i in range(y1, y2):
        sum = sum + 366 if (i % 4 == 0 and i % 100 != 0) or (i % 400 == 0) else sum + 365
    s1 = month_to_day(m1)
    s2 = month_to_day(m2)

    print("sum=%d,s2=%d,s1=%d,d2=%d,d1=%d"%(sum,s2,s1,d2,d1))
    sum = sum+s2-s1 + d2 - d1
    return sum

date1 = "2018-1-1"
date2 = "2017-12-31"
print(date_to_day(date1,date2))

import datetime
d1 = datetime.datetime(2018,1,1,0,0,0,0)
print(d1)
d2 = datetime.datetime(2017,12,31,0,0,0,0)
d3 = d1-d2
print(d3.days)




10.“四川麻将”共有108张牌,分为“筒”、“条”、“万”三种类型,
每种类型的牌有1~9的点数,每个点数有4张牌;游戏通常有4个玩家,游戏开始的时候,
有一个玩家会拿到14张牌(首家),其他三个玩家每人13张牌。
要求用面向对象的方式创建麻将牌和玩家并实现洗牌、摸牌、玩家按照 类型 和 点数 排列手上的牌的操作,
最后显示出游戏开始的时候每个玩家手上的牌。(20分)
"""

import random


class Man(object):
    def __init__(self, name):
        self.name = name
        self.maj = []


class Tongzi(object):
    name = "筒"
    def __init__(self, number):
        self.number = number

class Tiaozi(Tongzi):
    name = "条"

class Wanzi(Tongzi):
    name = "万"

def packin(clas):
    list = []
    for i in range(1, 10):
        for j in range(4):
            a = clas(i)
            list.append(a)
    return list

def main():
    tongList = packin(Tongzi)
    tiaoList = packin(Tiaozi)
    wanList = packin(Wanzi)
    List = tiaoList + tongList + wanList
    m1 = Man("王宝强")
    m2 = Man("贾乃亮")
    m3 = Man("马伊琍")
    m4 = Man("陈羽凡")
    # 洗牌
    random.shuffle(List)

    # 发牌
    for i in range(13):
        m1.maj.append(List.pop())
        m2.maj.append(List.pop())
        m3.maj.append(List.pop())
        m4.maj.append(List.pop())
        # 第一个人多发一张牌
    m1.maj.append(List.pop())

    for m in [m1, m2, m3, m4]:
        print("
%s的牌是:" % m.name)
        dict1 = {"筒": [], "条": [], "万": []}
        for j in range(14 if m == m1 else 13):
            if m.maj[j].name == "筒":
                dict1["筒"].append(m.maj[j].number)
            elif m.maj[j].name == "条":
                dict1["条"].append(m.maj[j].number)
            elif m.maj[j].name == "万":
                dict1["万"].append(m.maj[j].number)

        dict1["筒"].sort()
        dict1["条"].sort()
        dict1["万"].sort()
        for key, value in dict1.items():
            for i in value:
                print(str(i) + key, end=" ")

if __name__ == "__main__":
    main()

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41662.html

相关文章

  • 给伸手党的福利:Python 新手入门引导

    摘要:如果你仍然无法抉择,那请选择,毕竟这是未来的趋势,参考知乎回答还是编辑器该如何选我推荐社区版,配置简单功能强大使用起来省时省心,对初学者友好。 这是一篇 Python 入门指南,针对那些没有任何编程经验,从零开始学习 Python 的同学。不管你学习的出发点是兴趣驱动、拓展思维,还是工作需要、想要转行,都可以此文作为一个参考。 在这个信息爆炸的时代,以 Python入门 为关键字搜索出...

    用户84 评论0 收藏0
  • 史上最详细Python学习路线-从入门到精通,只需90天

    摘要:针对的初学者,从无到有的语言如何入门,主要包括了的简介,如何下载,如何安装,如何使用终端,等各种开发环境进行开发,中的语法和基本知识概念和逻辑,以及继续深入学习的方法。 ...

    gghyoo 评论0 收藏0
  • 学习python就用python技能树|Python技能树测评

    摘要:你想学习吗你知道技能树吗技能树是提供的系统化,面向实战的学习环境。如果你是初学者请马上开始学习,你最终可以获得的技能认证。学习到任何一阶段的同学们都可以轻松加入技能树的学习,所以你要学习就请赶快加入吧。 python 是一种很流行的高级动态语言。编程语言的的排行可以参考TIOBE。当然如果从...

    Harpsichord1207 评论0 收藏0
  • Python习题 --- 梯度下降

    Python 练习题 --- 梯度下降 题目要求思路讲解第一题第二题第一步第二步第三步第四步第五步改进 结尾 题目来源:在校课程老师布置的作业偷偷说一句:如果对我的答案和解析满意的话可不可以给我 点个赞 , 点个收藏 之类的Let's do it !!! 题目要求 已知某系统模型可由 ...

    番茄西红柿 评论0 收藏2637
  • 测试开发必看:《笨办法学Python3》PDF中文高清版,豆瓣高分8.0

    摘要:笨办法学第版结构非常简单,共包括个习题,其中个覆盖了输入输出变量和函数三个主题,另外个覆盖了一些比较高级的话题,如条件判断循环类和对象代码测试及项目的实现等。最后只想说,学习不会辜负任何人,笨办法学 内容简介   《笨办法学Python(第3版)》是一本Python入门书籍,适合对计...

    不知名网友 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<