分享Python入门经典基础题(day3)附完整答案

继续分享Python入门基础题(day3)

1.输出所有的水仙花数, 自幂数(三位数,各位数字的立方和等于自身)。

答:

for i in range(100, 1000):
    a = i // 100
    b = i % 10
    c = i // 10 % 10
    if ((a * a * a) + (b * b * b) + (c * c * c)) == i:
        print(i, "是水仙花数")

2.请去除a字符串多次出现的字母,仅留最先出现的一个。例 ‘azbcabbd’,经过去除后,输出 ‘azbcd’

答:

a = input("请输入一个字符串:")
s = list(set(a))
s.sort(key=a.index)
print(s)

3.这是一个网址,但是前面有错误的空格字符
" http://news.gzcc.cn/html/xiaoyuanxinwen/4.html"
(1) 去掉前面的空格
(2) 删除http: // 前缀
(3) 去掉后缀.html并输出数字4
(4) 显示这段文字中有多少个n
(5) 使用 / 分隔成多个单词

答:

s = "  http://news.gzcc.cn/html/xiaoyuanxinwen/4.html"
s1 = s.lstrip()  # 去除左边所有空格
print(s1)
s2 = s1.replace('http://', '')  # 去除http://前缀
print(s2)
s3 = s2.replace('.html', '4')  # 去除.html并替换成4
print(s3)
s4 = s.count('n')
print(s4)
s5 = s.split('/')
print(s5)

4.一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

答:

def hws(s):
    for i in range(5):
        a = int(s) // 10000
        b = int(s) // 1000 % 10
        c = int(s) % 100 // 10
        d = int(s) % 10
    if a == d  and  b == c:
        print(s, "是回文数")
    else:
        print(s, "不是回文数")


hws(12321)

5.输入一些数值,以stop作为输入的结束。求列表的最大值与最小值,和与平均值

答:

s = s1 = []
a = s2 = MAX = MIN = AVG = 0
while True:
    s = input("请输入数值,按stop结束")
    if s == 'stop':
        break
    else:
        s1.append(int(s))
        a += 1
        s2 += int(s)
    MAX = max(s1)
    MIN = min(s1)
    AVG = s2 / a
print("列表中的最大值为:{0},最小值为:{1},和为:{2},平均值为:{3}".format(MAX, MIN, s2, AVG))

6.现存任意两个字符串s1与s2,判断s1中的字符在s2中存在的个数(重复的算1个,一条语句实现)
? s2 = “hellodladfljdkfj”
? s1 = “hllz”

答:

s2 = 'hellodladfljdkfj'
s1 = 'hllz'
print({s: s2.count(s) for s in s1})

7.编写函数,第一个参数指定今天是星期几(1~ 7),第二个参数指定天数n,返回n天后是星期几。

答:

def xq(a, n):
    s1 = n % 7 + a
    if s1 > 7:
        s1 = s1 % 7
    print("今天是星期:", a)
    print(n, "天后是星期", s1)


xq(2, 10)

8.写函数,检查用户传入的序列(字符串)的每一个元素是否含有空内容(传入的序列元素只考虑都是字符串,使用isspace方法即可),如果有告诉调用者是哪个元素,如果没有则告诉调用者没有空格。

答:

def jc(ss):
    abc = 0
    for i in range(len(ss)):
        if ss[i].isspace():
            print("第", i, "个位置有空格")
            abc = 1
        elif abc == 0 and i == len(ss) - 1:
            print("没有空格")


jc("dk dk fnd")

9.写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者,否则返回“不符合要求”提示

答:

def cca(ll):
    L = len(ll)
    if L > 2:
        s1 = ll[:2]
        print(s1)
    else:
        print("不符合要求")


cca("abcdefg")

10.编写函数,接收一个字符串,分别统计大写字母、小写字母、数字、其他字符的个数,并以元组的形式返回结果。

答:

def tj(s):
    dx = xx = sx = qt = 0
    for d in s:
        if 'A' <= d <= 'Z':
            dx += 1
        elif 'a' <= d <= 'z':
            xx += 1
        elif '0' <= d <= '9':
            sx += 1
        else:
            qt += 1

    return (dx, xx, sx, qt)


aa = tj('ABCaaaaa123456--')
print(aa)

11.统计考试成绩,给定一个字典,里面包含学生成绩,使用函数,实现求平均成绩,最高成绩的学生,最低成绩的学生,全班成绩排名
ss = {“tom”: 60, “kate”: 100, “jerry”: 80, “lily”: 89, “luly”: 100}

答:

def pingjun(s1):
    L = len(s1)
    SUM = sum(s1.values())
    A11 = SUM / L
    return A11


ss = {"tom": 60, "kate": 100, "jerry": 80, "lily": 89, "luly": 100}
for i in sorted(ss, key=ss.__getitem__, reverse=True):
    print(i, ss[i])
    MAX = max(ss)
    MIN = min(ss)

print("成绩最高的同学是:{0},成绩最低的同学是:{1}".format(MAX, MIN))
AVG = pingjun(ss)
print("平均成绩为:", AVG)

12.假设市面上有4种面值硬币,20元、10元、5元、1元。输入一个钱数,能够使用最少的硬币凑成这个钱数。

答:

def money(m):
    a = m // 20
    b = m % 20

    c = b // 10
    d = b % 10

    e = d // 5
    f = d % 5
    print("需要{0}个20元,需要{1}个10元,需要{2}个5元,需要{3}个1元".format(a, c, e, f))


money(55)

13.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想吃时,只剩下一个桃子了。求第一天共摘多少个桃子。(迭代法)

答:

s = 1
for i in range(9, 0, -1):
    s = (s + 1) * 2
print("第一天共摘了:", s, "个桃子")

14.求平方和,有列表[1,……9],把每一个元素都取一下平方,然后累加求和
使用普通函数和面向过程思维解决问题
使用高阶函数解决问题

答:

#普通函数
def sum(a):
    global sss
    for i in range(9):
        ss = a[i] * a[i]
        sss += ss
    return sss


a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
sss = 0
A = sum(a)
print(A)




 # map()高阶函数
def sum1(x):
   return x
 
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = list(map(sum1, a))
s1 = 0
for j in range(9):
    s1 += b[j]
print(s1)

15.自己实现一下map函数,然后再自己调用一下。

答:

# 实现map函数功能
def sum(a):
    global sss
    for i in range(9):
        ss = a[i] * a[i]
        sss += ss
    return sss


a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
sss = 0
A = sum(a)
print(A)

16.写一个lambda表达式,实现两个数的相加

答:

s = lambda a, b: a + b
print(s(6, 7))

17.编写“计算机类”,属性包括CPU型号,内存大小,硬盘大小。行为包括介绍CPU型号,展示内存大小,展示硬盘大小,综合介绍

答:

class computer:
    def __init__(self, xh, nc, yp):
        self.xh = xh
        self.nc = nc
        self.yp = yp

    def showall(self):
        self.showcpu()
        self.shownc()
        self.showyp()

    def showcpu(self):
        print("cpu型号:", self.xh)

    def shownc(self):
        print("内存大小:", self.nc)

    def showyp(self):
        print("硬盘大小:", self.yp)


a = computer("intel", "8G", 512)
a.showcpu()
a.shownc()
a.showyp()
a.showall()

18. 编写一个计数器,能够记录一个类创建了多少个对象。

答:

class Count:
    count = 0

    def __init__(self):
        Count.count = Count.count + 1


a1 = Count()
a2 = Count()
a3 = Count()

print("这个类创建了{0}个对象".format(Count.count))

19.猜拳游戏
分析类:属性、方法自己玩家:Player选角色[“美羊羊”,“喜羊羊”, “沸羊羊”]
? 出拳
石头1
剪刀2
布3
计算机玩家:Computer
选角色[“1美羊羊”,“2喜羊羊”, “3沸羊羊”] 随机选角
? 随机出拳
game类,包含了整个游戏流程,让玩家选角色、出拳、计算机选角色、出拳、比较出拳,显示结果
再玩一次
赢 + 1分
可以循环玩
当游戏结束之后,可以提示计算机和玩家的分数

答:

import random


class game:
    def __init__(self, aa, bb):
        self.aa = aa
        self.bb = bb

    def USER(self):
        count1 = 0
        count2 = 0
        while True:
            ###玩家选角色
            user1 = int(input("请您选择您的角色:[1美羊羊,2喜羊羊,3沸羊羊],按4退出"))
            if user1 == 4:
                print("您的胜利分数为:", count1, "电脑玩家的胜利分数为:", count2)
                break
            if user1 == 1:
                b = '美羊羊'
            elif user1 == 2:
                b = '喜羊羊'
            elif user1 == 3:
                b = '沸羊羊'
            else:
                print("输入错误,请重新输入!")

            ###电脑随机角色
            strs1 = ['美羊羊', '喜羊羊', '沸羊羊']
            n = random.randint(0, len(strs1))  # 返回一个字符串数组随机位置的字符串
            ###电脑随机出拳
            strs2 = ['石头', '剪刀', '布']
            n = random.randint(0, len(strs2))

            print("您的角色是:", b)
            chuquan = int(input("请出拳:[石头1,剪刀2,布3]"))
            if chuquan == 1:
                chuquan = '石头'
            elif chuquan == 2:
                chuquan = '剪刀'
            elif chuquan == 3:
                chuquan = '布'
            print("您出的拳是:", chuquan)
            print("电脑玩家的角色是:", strs1[n])
            print("电脑玩家出的拳是是:", strs2[n])

            # 比较出拳
            if chuquan == '石头' and strs2[n] == '剪刀':
                print("您胜!")
                count1 += 1
            elif chuquan == '石头' and strs2[n] == '布':
                print("电脑胜!")
                count2 += 1
            elif chuquan == '剪刀' and strs2[n] == '布':
                print("您胜!")
                count1 += 1
            elif chuquan == '剪刀' and strs2[n] == '石头':
                print("电脑胜!")
                count2 += 1
            elif chuquan == '布' and strs2[n] == '石头':
                print("您胜!")
                count1 += 1
            elif chuquan == '布' and strs2[n] == '剪刀':
                print("电脑胜!")
                count2 += 1
            else:
                print("平手!")


ss = game('USER', 'PC')
ss.USER()

20.矩形与正方形两个类,求周长与面积。分别使用不继承与继承两种方式。

答:

# 继承方式求矩形和正方形面积周长
class juxing:
    def __init__(self, c, k):
        self.c = c
        self.k = k

    def sum(self):
        zc = self.c + self.c + self.k + self.k
        mj = self.c * self.k
        if self.c == self.k:
            print("正方形周长为:", zc)
            print("正方形面积为:", mj)
        else:
            print("矩形周长为:", zc)
            print("矩形面积为:", mj)


class zhengfangxing(juxing):
    def __init__(self, c, k):
        juxing.__init__(self, c, k)


a = juxing(10, 20)
b = zhengfangxing(10, 10)
a.sum()
b.sum()






# 非继承方式求矩形和正方形面积周长
class juxing:
    def __init__(self, c, k):
        self.c = c
        self.k = k

    def sum1(self):
        zc = self.c + self.c + self.k + self.k
        mj = self.c * self.k
        print("矩形周长为:", zc)
        print("矩形面积为:", mj)


class zhengfangxing:
    def __init__(self, c, k):
        self.c = c
        self.k = k

    def sum2(self):
        zc = self.c + self.c + self.k + self.k
        mj = self.c * self.k
        print("正方形周长为:", zc)
        print("正方形面积为:", mj)


a = juxing(5, 10)
a.sum1()
b = zhengfangxing(5, 5)
b.sum2()

21.编写如下的继承结构,类C继承(A,B),类D继承(B,A),类E继承(C,D)或者(D,C),会出现什么情况?

答: 类E会导致程序出错。

    class A:
        pass
    
    
    class B:
        pass
    
    
    class C(A, B):
        pass
    
    
    class D(B, A):
        pass
    
    
    class E(D, C):
        pass
    
    
    print(C.mro())
    print(D.mro())
    print(E.mro())

22.使用random.random(),函数实现返回[a,b]之间的整数。(a<=x<=b)

答:

# 用于产生0-100之间的随机整数 0<=x<=100
import random

for i in range(3):
    x = random.randint(0, 100)
print(x)

23.自行计算常数e的近似值。(1 / 0! + 1 / 1! + 1 / 2! + 1 / 3! + ……)

答:

# 计算常数e的近似值
i = 1
a = 1
e = 1
while i <= 10:
    a = a * i
    e = e + 1 / a
    i += 1
print(e)
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值