Python基础知识

1. 介绍关于自己的一些详细信息

首先通过用户终端输入自己的学号、姓名、性别、出生日期、用户名、所修的课程和所选的教材等基本信息。
然后判断自己的出生年份是否为闰年、创建的用户名是否合法。
最后通过用户终端将所有信息和判断结果输出。

代码:

student = input("Please enter your student ID:")
name = input("Please enter your name:")
gender = input("Please enter your gender:")
birthday = input("Please enter your birthday(2020/01/01):")
username = str(input("Please enter your username:"))
course = input("Please enter your course:")
textbook = input("Please enter your textbook:")

print("student ID:", student)
print("name:", name)
print("gender:", gender)
print("birthday:", birthday)
print("username:", username)
print("course:", course)
print("textbook:", textbook)

year = int(birthday[:4:])
boolyear = (year % 4) == 0 and (year % 100) != 0 or (year % 400) == 0

if boolyear:
    print("出生年%d 是闰年" %year)
else:
    print("出生年%d 不是闰年" %year)


yingwen="abcdefghijklmnopqrstuvwxyz"
xiahuaxian="_"
shuzi="1234567890"
if len(username) == 3:
    if username[0] in yingwen+xiahuaxian:
        if username[1] in yingwen+xiahuaxian+shuzi:
            if username[2] in yingwen+shuzi:
                print("用户名:%s 合法" % username)
            else:
                print("用户名:%s 不合法,第三个字符必须是小写字母或数字" % username)
        else:
            print("用户名:%s 不合法,第二个字符必须是小写字母或下划线或数字" % username)
    else:
        print("用户名:%s 不合法,第一个字符必须是小写字母或下划线" % username)
else:
    print("用户名:%s 不合法,字符长度超出3" %username)

python输入学号姓名然后输出学号 用python输入姓名和学号代码_数据

2. 内部竞聘

在公司内部竞聘中,候选人小明和小强竞聘部门副经理,考核的选项共有5项,分别是部门同事投票、去年业绩、年龄、在公司年份、竞聘演讲得分。评分规则如下:

  1. 部门同事投票,每一票得3分
  2. 业绩得分,每拿业绩200000,得一分
  3. 年龄,年龄每小一岁得2分
  4. 在公司年份,没长一年得5分
  5. 竞聘演讲,得分为实际演讲得分

各项得分如下:

python输入学号姓名然后输出学号 用python输入姓名和学号代码_数据_02

请计算两位候选人的最终得分,评选出部门副经理
提示:将信息保存在变量中;使用运算符进行计算

代码:

sum1 = 0
sum2 = 0

piao1 = 11
piao2 = 7
ye1 = 586319
ye2 = 811064
age1 = 34
age2 = 27
year1 = 10
year2 = 4
score1 = 81
score2 = 83
sum1 = (piao1/1)*3
sum1 = int((ye1/200000))*1 + sum1
sum2 = (piao2/1)*3
sum2 = int((ye2/200000))*1 + sum2
if age1 < age2:
    sum1 = (age2 - age1) * 2 + sum1
else:
    sum2 = (age1 - age2) * 2 + sum2
if year1 > year2:
    sum1 = (year1 - year2) * 5 + sum1
else:
    sum2 = (year2 - year1) * 5 + sum2
sum1 = score1 + sum1
sum2 = score2 + sum2
print("小明得分:", sum1, "小强得分:", sum2)

python输入学号姓名然后输出学号 用python输入姓名和学号代码_数据_03

3. 有四个字符串:

’ haPPy BiRthDAy To u’
‘Happy biRthDAy To you’
’ haPpy BirThdAy 2 deAr LiLi’
’ happy birthday 2 u’
可以看出这4个字符串连起来是一首歌,但不工整,并夹杂着很多口语,请将上述字符串修改为以下规范格式,并输出。
happy birthday to you
happy birthday to yoyou
happy birthday to dear lili
happy birthday to you

代码:

str1 = '    haPPy BiRthDAy To u'
str2 = 'Happy biRthDAy To you'
str3 = '  haPpy BirThdAy 2 deAr LiLi'
str4 = '  happy birthday 2 u'
str1 = str1.strip().lower().replace('u', 'you')+'\n'
str2 = str2.strip().lower().replace('you', 'yoyou')+'\n'
str3 = str3.strip().lower().replace('2', 'to')+'\n'
str4 = str4.strip().lower().replace('2', 'to').replace('u', 'you')+'\n'
print(str1+str2+str3+str4)

python输入学号姓名然后输出学号 用python输入姓名和学号代码_编译原理_04

选择与循环

1. 使用循环遍历你的课程列表

(课程信息自拟,可以输入,也可以程序中固定好课程),找出包含“设计”字的课程,并输出。

wangxinlei = ["软件测试", "编译原理", "云计算基础设计", "大数据技术", "python开发基础"]
wangxin=[]
for i in wangxinlei:
    if '设计' in i:
        wangxin.append(i)
print(wangxin)

python输入学号姓名然后输出学号 用python输入姓名和学号代码_数据_05

2. 打印所有三位的水仙花数。

在数论中,水仙花数(narcissistic number)是指一个n位数,它的各个数位的数的n次方之和等于该数本身。例如:153是三位水仙花数,因为153 = 13 + 53 + 33。

wangxinlei =[]
for i in range(100,1000):
    m = int(i / 100)
    n = int(i % 100 / 10)
    p = i % 100 % 10
    if i == m * m * m + n * n * n + p * p * p:
        print(i)
        wangxinlei.append(i)
print(wangxinlei)

python输入学号姓名然后输出学号 用python输入姓名和学号代码_编译原理_06

3. 给定一个正整数,判断它是否是素数

n = int(input("其输入一个数字:"))
flag = True
if n <= 1:
   flag = False
i = 2
while i*i <= n:
    if n % i == 0:
      flag = False
    i += 1
if flag == True:
    print(n, "是素数")
else:
    print(n, "不是素数")

python输入学号姓名然后输出学号 用python输入姓名和学号代码_python输入学号姓名然后输出学号_07

4. 循环玩一个猜数字游戏,猜计算机产生90-100

(或自拟区间,建议10个数以内便于猜测)之间的随机整数,直到猜中为止。

from random import randint
i = 0
while 1:
    i =i +1
    wangxinlei = int(input("请输入你要猜的数字:"))
    num = randint(90,100)
    print("产生随机数",num)
    if wangxinlei ==num:
        print("恭喜你!猜了", i, "次就猜出来了")
        break
    else:
        print("很遗憾,你猜错了!!")

python输入学号姓名然后输出学号 用python输入姓名和学号代码_数据_08

Python序列的使用

1. 请输入4或多门课程信息

几个学生,及每门课程的成绩单,参考如下

python输入学号姓名然后输出学号 用python输入姓名和学号代码_python输入学号姓名然后输出学号_09


实验时,数据自拟,不要用上面的数据,成绩单中要有你的两门课程,之后统计每个同学的成绩单,数据结果参考如下:


python输入学号姓名然后输出学号 用python输入姓名和学号代码_编译原理_10

实验代码:

编译原理 = {'王鑫垒':90, '刘达':95, '张三':89, '李四':70, '王五':60}
ui设计= {'王鑫垒':91, '刘达':94, '张三':85, '李四':78, '王五':66}
大数据 ={'王鑫垒':92, '张三':80, '李四':72, '王五':90}
python基础 ={'王鑫垒':93, '刘达':90,  '李四':70, '王五':61}

students = ['王鑫垒', '刘达', '张三', '李四', '王五']
courses =['编译原理', 'ui设计', '大数据', 'python基础']

for student in students:
    lesson =[]
    for item in 编译原理.items():
        if student==item[0]:
            lesson.append(('编译原理', item[1]))
    for item in ui设计.items():
        if student==item[0]:
            lesson.append(('ui设计', item[1]))
    for item in 大数据.items():
        if student==item[0]:
            lesson.append(('大数据', item[1]))
    for item in python基础.items():
        if student==item[0]:
            lesson.append(('python基础', item[1]))
    print(student, '选修了', len(lesson), '门课程:')
    for i in lesson:
         print("\t", i[0], ':', i[1])

python输入学号姓名然后输出学号 用python输入姓名和学号代码_用户名_11

2. 统计任意你喜欢的一首现代诗、散文、课文节选

中英文歌曲的歌词等中出现的汉字或英文单词和标点的次数,例如诗经《桃夭》的统计结果如下:

python输入学号姓名然后输出学号 用python输入姓名和学号代码_python输入学号姓名然后输出学号_12

代码:

url = input('请输入要统计的文章:')
file = open(url, encoding="UTF-8")
text = file.read()
print(text)
file.close()
wangxinlei = list(text)
王鑫垒 = []
for i in wangxinlei:
    num = 0
    for j in wangxinlei:
        if i==j:
            num = num + 1
    if i in 王鑫垒:
        continue
    王鑫垒.append(i)
    print(i, '出现', num, '次')

python输入学号姓名然后输出学号 用python输入姓名和学号代码_编译原理_13

函数

1. 定义一个函数打印如图所示的三角形,行数由参数指定

python输入学号姓名然后输出学号 用python输入姓名和学号代码_python输入学号姓名然后输出学号_14

def showSanjiao(n):
    for i in range(n):
        print(end=' '*(n-i))
        print(end='* '*(i+1))
        print('')
wangxinlie  = int(input('输入行数:'))
showSanjiao(wangxinlie)

python输入学号姓名然后输出学号 用python输入姓名和学号代码_用户名_15

2. 使用函数计算任意start月~end月的平均访客量

python输入学号姓名然后输出学号 用python输入姓名和学号代码_用户名_16

def monthView(start, end):
    month = [200, 388, 123, 456, 987, 342,
             767, 234, 124, 345, 123, 234]
    sum= 0
    for i in range(start-1,end):
        sum=month[i]+sum
    return sum

while 1:
    start=int(input("请输入开始月份:"))
    end=int(input("请输入截止月份:"))
    wangxinlie =monthView(start,end)
    print(start,"月~",end,"月,用户访问量为:",wangxinlie)

python输入学号姓名然后输出学号 用python输入姓名和学号代码_数据_17

3. 使用可变长参数*parameter,接收任意几个月份,求这几个月份的平均访客数

python输入学号姓名然后输出学号 用python输入姓名和学号代码_编译原理_18

def monthAvrView(*p):
    month = [200, 388, 123, 456, 987, 342,
             767, 234, 124, 345, 123, 234]
    sum = 0
    num = 0
    doc ={}
    for e in p:
        if e in [1,2,3,4,5,6,7,8,9,10,11,12]:
            sum =month[e-1]+sum
            num =num + 1
            doc.update({e:month[e-1]})
    if num==0:
        print("没有这些月份。。。")
        return 0
    else:
        avr = sum / num
        return doc,avr
doc,avr=monthAvrView(1,2,3,5)
print("每月访问量:",doc,"平均访问量:",avr)

python输入学号姓名然后输出学号 用python输入姓名和学号代码_用户名_19

4.使用可变长度的参数**parameter,接收学生的个人信息,每个人的信息内容不一定相同,和学号对应存储,

函数声明如下: def student_information(stunumber,**stuinfo): 运行结果如下:

python输入学号姓名然后输出学号 用python输入姓名和学号代码_数据_20

list={}
def student_information(stunumber,**stuinfo):
    list.update({stunumber:stuinfo})
student_information(201234659,爱好="乒乓",籍贯='湖北',姓名='刘达')
student_information(202030186,籍贯="河北",姓名='刘达')
student_information(202030733,民族="苗",姓名='刘达')
print(list)
print(type("abc"))

python输入学号姓名然后输出学号 用python输入姓名和学号代码_用户名_21

面向对象

1. 创建狗类

数据成员包含但不限定于:品种、爱称、年龄、性别。
方法成员包含但不限定于:吃。
创建两个对象并调用方法进行测试。
定义一个列表,存储狗对象
定义一个不属于类的函数,在狗列表中查找某一品种的狗对象(如‘拉拉布拉多’等任意品种),并以列表的形式返回
对返回的列表进行遍历,并输出所有找到的狗的名字。

# 创建狗对象
class Dog():
    def __init__(self, pinzhong=None, aicheng=None, age=None,sex=None):
        self.pinzhong=pinzhong
        self.aicheng=aicheng
        self.age=age
        self.sex=sex
    def eat(self):
        print(self.aicheng+"吃骨头")
    def print(self):
        return self.pinzhong,self.aicheng,self.age,self.sex
# 按品种查找狗
def findByPinzhong(list,pinzhong):
    dogs=[]
    for i in list:
        if i.pinzhong==pinzhong:
            dogs.append(i)
    return dogs
# 将狗狗名称输出
def showAichengByDogs(dogs):
    aichengs=[]
    for i in dogs:
        aichengs.append(i.aicheng)
    return aichengs
# 主函数
if __name__ == '__main__':
    dog1 = Dog("拉拉布拉多", "小花", 2, "雌性")
    dog2 = Dog("哈士奇", "小苗", 1, "雄性")
    dog3 = Dog("哈士奇", "小白", 2, "雌性")
    list = [dog1, dog2, dog3]
    print('-'*20+'所有狗狗的信息'+'-'*20)
    for i in list:
        print(i.pinzhong,i.aicheng,i.age,i.sex)
    pinzhong=input("请输入要查找哪一品种的狗:")
    dogs=findByPinzhong(list,pinzhong)
for i in  showAichengByDogs(dogs):
        print(i)

python输入学号姓名然后输出学号 用python输入姓名和学号代码_用户名_22

2. 定义一“圆”Cirlcle类

圆心为“点”Point类,构造一圆,求圆的周长和面积,创建多个圆对象,并能统计创建圆对象的个数。能够判断某点与圆的关系。

import math
class Cirlcle:
    def __init__(self, r=None, point=None):
        self.point=point
        self.r=r

    def zhouchang(self):
        return float(2*3.14*self.r)

    def mianji(self):
        return float(self.r*self.r*3.14)

class Point:
    def __init__(self, x=None, y=None):
        self.x=x
        self.y=y

def jisuand(p1,p2):
    return math.sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y))

def guanxi(r,d):
    if r>d:
        print("点在圆内")
    elif r==d:
        print("点在圆上")
    elif r<d:
        print("点在圆外")

if __name__ == '__main__':
    p1 = Point()
    p1.x = int(input("请输入圆的x坐标"))
    p1.y = int(input("请输入圆的y坐标"))
    r = int(input("请输入圆的半径"))
    c1 = Cirlcle(r,p1)
    print("圆的面积为:",c1.mianji())
    print("圆的周长为:", c1.zhouchang())
    p2 = Point()
    p2.x = int(input("请输入判断某点的x坐标"))
    p2.y = int(input("请输入判断某点的y坐标"))
    d = jisuand(c1.point,p2)
    guanxi(c1.r,d)

python输入学号姓名然后输出学号 用python输入姓名和学号代码_用户名_23

3. 玩家(攻击力)攻击敌人,敌人(血量)受伤后还可能死亡。

class enemy:
    def __init__(self, name, blood=0, attack=0):
        self.name=name
        self.blood=blood
        self.attack=attack
    @property
    def blood(self):
        return self.__blood
    @blood.setter
    def blood(self,blood):
        if 0<=blood<=100:
            self.__blood=blood
        else:
            raise Exception("血量数据超出范围!!")
    @property
    def attack(self):
        return self.__attack
    @attack.setter
    def attack(self, attack):
        if 1 <= attack <= 50:
            self.__attack = attack
        else:
            raise Exception("攻击力数据超出范围!!")
en1= enemy("dada",10,50)
print(en1.blood,en1.attack)
en2=enemy("aada",101,51)

python输入学号姓名然后输出学号 用python输入姓名和学号代码_python输入学号姓名然后输出学号_24

4. 张无忌教赵敏九阳神功

赵敏教张无忌化妆
张无忌上班挣了10000元
赵敏上班挣了8000元

class person:
    def __init__(self, name=None, skill=None, pay=None):
        self.name= name
        self.skill=skill
        self.pay=pay
    def teach(self,name):
        print(self.name+"教"+name+self.skill)
    def work(self):
        print(self.name+"上班挣了"+str(self.pay)+"元")
p1 = person("张无忌","九阳神功",10000)
p2 = person("赵敏","化妆",8000)
p1.teach(p2.name)
p2.teach(p1.name)
p1.work()
p2.work()

python输入学号姓名然后输出学号 用python输入姓名和学号代码_数据_25