python基础学习

一、字符串

# 一、字符串
#   1.1 字符串可以用单引号或双引号表示,当字符串中有单引号或双引号时,加上\进行转义
msg = "hello \' 1 \" world"
print(msg)

#   1.2 字符串.方法名()
msg2 = "welcome to China!"
print(msg2.title())
print(msg2.upper())
print(msg2.lower())
length = len(msg2)
print(length)
print(msg2)

#   1.3 字符串的拼接
name = "chen" + "yaqi"
print(name + "~")

#   1.4 字符串的空白字符:空格(space键)、制表符(Tab键)(\t)、换行符(\n)
print("a\tb")
print("a\nb")

#   1.5 去除空白的方法
message = "     nijxgbdiy  jj  "
print(message.lstrip())  # 去头
print(message.rstrip())  # 去尾
print(message.strip())   # 去头去尾

#   1.6 变量的命名规则
#       (1)只能包含字母、数字和下划线,不使用数字开头,不包含空格
#       (2)不适用Python关键字和方法名

#   1.7 数字类型
#       整数和浮点数(小数)
#       1.7.1 整数的运算
#           //  表示取整
#           %   表示取模
#           a**b   表示a的b次方
print(4/3)
print(4//3)
print(5%2)
print(4**3)

#       1.7.2 浮点数的运算
#       浮点数+整数=浮点数
#       问题:部分计算精度不精确
print(3.0+3)
print(4.2/3)

#   1.8 字符串与数字的相加和相乘
print("我的年龄是"+"18")
print("我的年龄是"+str(19))
print(30+int("40"))
print(30+float("50.5"))
print(int(23.6))
print("hello "*3)

#   1.9 input():将用户输入的内容转化为字符串



二、列表

# 二、列表
#   2.1 定义列表
studentNames = ["wangjunkai", "王源", "易烊千玺"]
studentScores = [98, 99, 95]
print(studentNames)
print(studentScores)

#   2.2 访问列表元素
print(studentNames[1])

#   2.3 倒数访问列表
print(studentNames[-1])

#   2.4 截取子列表的方式
print(studentNames[0:2])    # 取到的值等价于下标为[0,2)
print(studentNames[:2])
print(studentNames[1:])
print(studentNames[:])
print(studentNames)

#   2.5 列表的增删改
#       (1)修改
studentNames[1] = "youzhangjing"
print(studentNames)
#       (2)添加
#           append():默认添加到列表末尾
#           insert(要插入的位置,要插入的数据)
studentNames.append("xiaogui")
print(studentNames)
studentNames.insert(0,"caixukun")
print(studentNames)
#       (3)删除
#           del(列表名[下标])或者del 列表名[下标]
#           remove(要移除的数据) ——若列表中有多个相同的数据,则默认移除第一个出现的数据
del(studentNames[4])    # 等价于 del studentNames[4]
print(studentNames)
studentNames.remove("caixukun")
print(studentNames)

#   2.6 pop方法弹出数据
#       pop():弹出列表中的最后一个元素并把它从列表中删除
#       pop(下标值):弹出列表中的指定下标处的元素并把它从列表中删除
print(studentNames.pop())
print(studentNames)

#   2.7 列表排序和列表翻转
#       (1)列表排序
#           列表名称.sort():按照列表元素的首字母进行排序(先数字,然后A-Z,最后a到z)(中文无法排序)
#           sort方法是永久排序,会对列表产生永久的影响
ninepercent = ["caixukun", "chenlinong", "fanchengcheng", "huangminghao", "linyanjun", "zhuzhengting", "wangziyi", "wanglinkai", "youzhangjing"]
ninepercent.sort()
print(ninepercent)
#       (2)列表翻转(倒序排序)
#           列表名称.sort(reverse=True)
ninepercent.sort(reverse=True)
print(ninepercent)
#   二、列表
#   2.1 列表排序和列表翻转
#       列表排序:
#           sort():永久排序
studentNames = ["wangjunkai", "wangyuan", "yiyangqianxi"]
studentScores = [98, 85, 99]
studentNames.sort()
print(studentNames)
studentNames.sort(reverse=True)
print(studentNames)
#           sorted():临时排序,会返回一个新的列表,不会对原来的列表产生影响
ninepercent = ["caixunkun", "chenlinong", "fanchengcheng", "huangminghao", "linyanjun", "zhuzhengting", "wangziyi", "xiaogui", "youzhangjing"]
print(sorted(ninepercent))
#       列表翻转:reverse()
ninepercent.reverse()
print(ninepercent)

#   2.2 多维列表和取得列表长度
#       列表长度:len()
print(len(ninepercent))
#       列表可以包含不同类型的数据
list1 = ["sss", 123, 45.6]
#       列表可以包含列表(多维列表)
list2 = [["a", "b"], ["c", "d"], ["e", "f"]]
print(list2[0])
print(list2[0][1])

#   2.3 for循环遍历列表
#       for 临时变量名 in 列表名: 循环体
for name in ninepercent:
    print(name)

#   2.4 生成有规律的数字列表
#       list(range(3,10))  ——生成[3,10)
#       range(第一个数,最后一个数,每次增加多少)
listNumber = list(range(3, 10, 2))
print(listNumber)

# list4 = list(range(1,11))
# newListNum = []
# for num in list4:
#     newListNum.append(num ** 2)
# print(newListNum)

# newListNum = []
# for num in range(1, 11):
#     newListNum.append(num ** 2)
# print(newListNum)

newListNum = [num ** 2 for num in range(1, 11)]
print(newListNum)

#   2.5 利用索引遍历列表
for index in range(0, len(ninepercent)):
    ninepercent[index] = ninepercent[index].title()
    print(ninepercent[index])

#   2.6 数字列表的简单统计
#       min(列表名):获取列表中的最小值
#       max(列表名):获取列表中的最大值
#       sum(列表名):获取列表中所有值的和
print(min(studentScores))
print(max(studentScores))
print(sum(studentScores))

#   2.6 复制列表
#   (1)newNine = ninepercent[:]   ——newNine赋值了ninepercent的值,其中一个发生变化,不会影响另一个
#   (2)newNine = ninepercent      ——newNine引用了ninepercent,其中一个发生了变化,另一个也会变化
newNine = ninepercent[:]
# newNine = ninepercent * 2         # 复制两遍
newNine[0] = "有长进"
print(ninepercent)
print(newNine)

#   2.7 元组(不可修改的列表,访问方法同列表相同)
four = ("caixukun", "fanchengcheng", "justin", "zhuzhengting")
for name in four:
    print(name)

三、if语句

#   三、条件语句if
import random

age = 24
if age > 40:
    print("old")
else:
    print("young")

#   python的布尔值为True和False
print("youzhangjing" == "Youzhangjing")

#   3.1 多条件判断
#   (1) and
#   (2) or
level = 3
if age >= 18 and age <=40 and level == 3:
    print("青年")
else:
    print("非青年")

#   3.2 判断值是否在列表里面
#   (1) in
#   (2) not in
names = ["wangjunkai", "wangyuan", "yiyangqianxi"]
print("youzhangjing" in names)

#   3.2 if的嵌套
#   (1) if……else的嵌套
#   (2) if……elif……else
num = 11
# if num <= 4:
#     print("免费进入")
# else:
#     if num <= 12:
#         print("半价进入")
#     else:
#         print("全价进入")

# if num <= 4:
#     print("免费")
# elif num <=12:
#     print("半价")
# else:
#     print("全价")

#   3.2 if的其他形式
#   一个条件判断中,可以有0到多个elif,0到一个else

# if num <= 4:
#     print("免费")
# elif num <=12:
#     print("半价")
# elif num <= 60:
#     print("全价")
# else:
#     print("免费")

if num <= 4 or num >= 60:
    print("免费")
elif num <= 12:
    print("半价")
else:
    print("全价")

#   3.3 猜数
#   random.randint(1, 20)  ——[1,20]
#   break:退出循环
import random
number = random.randint(1, 20)
print("猜猜1-20之间的一个数:")
for i in range(1, 6):
    userIn = int(input())
    if userIn < number:
        print("猜小了")
    elif userIn > number:
        print("猜大了")
    else:
        print("猜对了")
        break
print("游戏结束")

四、字典

#   四、字典
#   4.1 字典的定义与访问
#       字典的定义:键值对
#           字典名 = {'键':'值'}   ——创建时键值对可为空   stu1={}
stu1 = {'name': "王俊凯", 'age': 18, 'gender': "male"}
print(stu1)
#       字典的访问:
#           字典名['键']
print(stu1['name'])

#   4.2 字典的增删改
#       增加:字典名['键']=值
stu1['rank'] = 1
print(stu1)
#       修改:字典名['键']=值
stu1['age'] = 19
print(stu1)
#       删除:del(字典名['键'])
del(stu1['rank'])
# del stu1['rank']
print(stu1)

#   4.2 一行与多行定义
#   (1)对于列表,在逗号后直接换行
#   (2)对于连续字符串,用连接符\
ninepercent = ["caixunkun", "chenlinong", "fanchengcheng",
               "huangminghao", "linyanjun", "zhuzhengting",
               "wangziyi", "xiaogui", "youzhangjing"]
print(ninepercent)

str1 = "eeeeeeeeeeeeeeeeeeeeeeeeeee\
wwwwwwwwwwwwwwwwwwwwwwwww\
cccccccccccccccccccccccccccccc"
print(str1)

#   4.3 列表与字典的嵌套使用
students = [{'name': "王俊凯", 'age': 23, 'gender': "male"},
            {'name': "王源", 'age': 22, 'gender': "male"},
            {'name': "易烊千玺", 'age': 21, 'gender': "male"}]
print(students[1]['name'])

stu2 = {'name': "王俊凯", 'age': 18, 'gender': "male", 'hobby': ['唱歌', '跳舞', '吉他']}
print(stu2['hobby'][2])

#   4.4 判断两个字典是否相等
#   列表有序,字典无序
list1 = ['w', 'e']
list2 = ['e', 'w']
print(list1 == list2)

dic1 = {'name': "王俊凯", 'age': 18}
dic2 = {'age': 18, 'name': "王俊凯"}
print(dic1 == dic2)

#   4.5 用key和value获取键集合与值集合
#   (1)遍历键:字典名.keys()   ——得到的是一个关于键的集合
print(stu1.keys())

for i in stu1.keys():
    print(i)

print(list(stu1.keys()))

#   (2)遍历值:字典名.values()   ——得到的是一个关于值的集合
print(stu1.values())

for i in stu1.values():
    print(i)

print(list(stu1.values()))

#   (3)遍历键值对:字典名.items()   ——得到的是一个关于键值对的集合
print(stu1.items())

for i in stu1.items():
    print(i)
    print(i[0], i[1])

print(list(stu1.items()))

for k, v in stu1.items():
    print(k, v)

#   4.6 判断键是否存在和设置键的默认值
#   (1)判断键是否存在: in    not in
print('name' in stu1.keys())
# print('name' in stu1)         # 仅有字典名,判断的是键是否存在
print(19 in stu1.values())

#   (2)设置键的默认值: 字典名.setdefault('键', 值)
stu1.setdefault('age', 18)      # 如果此处的键M是字典中不存在的键A,则会为该字典添加键M及相应的值
print(stu1)


五、while循环

#   五、while循环
#   当条件为True时,才会执行while循环

# i = 1
# while i < 11:
#     print(i)
#     i = i + 1

# total = 0
# n = 1
# while n < 101:
#     total = total + n
#     n = n + 1
# print(total)

#   5.1 三种跳出循环的方法
#   (1)通过判断标志位来设置终止循环的条件       ——此处为flag
 total = 0
 flag = True
 while flag:
     num = int(input("please input an integer:"))
     total = total + num
     if num == 0:
         flag = False
 print(total)

#   (2)直接通过条件来设置终止循环的触发点    ——此处为i=-1
 total = 0
 i = -1
 while i != 0:
     num = int(input("please input an integer:"))
     total = total + num
     if num == 0:
         i = 0
 print(total)

#   (3)break:跳出当前循环
 total = 0
 while True:
     num = int(input("please input an integer:"))
     total = total + num
     if num == 0:
         break
 print(total)

 while True:
     num = int(input("please input an integer:"))
     if num % 2 == 0:
         print(num)
     if num == 0:
         break

#   5.2 利用while遍历列表与字典
#   (1)遍历列表
three = ["王俊凯", "王源", "易烊千玺"]
i = 0
while i < len(three):
    print(three[i])
    i = i + 1

#   (2)遍历字典
stu = {'name': "王俊凯", 'age': 18, 'gender': "male"}
index = 0
keys = list(stu.keys())
while index < len(keys):
    key = keys[index]
    value = stu[key]
    print(key, value)
    index = index + 1

#   5.3 使用while循环移动列表的数据和删除某个值
#   (1)移动列表的数据
studentNames = ["王俊凯", "王俊凯", "王俊凯", "王源", "易烊千玺"]
newNames = []
while studentNames:         # 当列表为空时,while后面的条件值变为false
    newNames.append(studentNames.pop())
print(studentNames)
print(newNames)

#   (2)删除某个值
while "王俊凯" in newNames:
    newNames.remove("王俊凯")
print(newNames)

#   5.3 使用while循环给字典添加数据和print不换行输出
#   (1)给字典添加数据
dic = {}
while True:
    key = input("请输入键:")
    value = input("请输入值:")
    dic[key] = value
    answer = input("是否继续添加(yes/no):")
    if answer == "no":
        break
print(dic)

#   (2)print不换行输出
#   当print默认end='\n',即换行
#   令print的end='',就可以不换行输出
for i in range(1, 11):
    print(i, end='')

print(123, end='\n\n\n')
print("456\n\n\n")

六、函数

#   六、函数
#   6.1 函数定义(先定义后使用)
def test():
    print("test1")
    print("test2")
test()

#   6.2 函数的参数(形参和实参)
def hello(name):            # 此处的name为形参
    print("hello " + name)
hello("王俊凯")              # 王俊凯为实参

#   6.3 函数的返回值和none值
def add(a, b):
    return a+b
print(add(1, 2))

#   None NoneType
def multi(a, b):
    print(a * b)
res = multi(2, 3)
print(res)

print("hello", "world")
print("hello", "world", sep=",")    # sep用于设置分隔符

#   6.3 通过关键字参数修改某个参数的默认值
def add2(a, b=10, c=20):
    print(a + b + c)
add2(1,c=2)
add2(1, 1, 1)

#   6.4 局部变量&全局变量
name = "全局变量"
def test():
    name = "局部变量"
    print(name)
test()
print(name)

name2 = "全局变量"
def test2():
    global name2         # 生命接下去是对全局变量做更改
    name2 = "全局变量更改"
    print(name2)
test2()
print(name2)

#   6.5 函数与字典列表结合使用
def testDic(n, a):
    dic = {'name':n, 'age':a}
    return dic
print(testDic("王俊凯", 18))

l = ["wjk", "wy", "yyqx"]
def testList(list):
    del list[2]
    return list
print(testList(l[:]))       # 使得testList方法的使用不对原列表l产生影响
print(l)

#   6.6 可变个参数的使用:形参前加*
def testNum(a, *n):
    print(n)
testNum(1)
testNum(1)
testNum(1, 2, 3)

#   6.7 创建模块并导入
import test   # 导入整个模块          ——文件名一般以小写开头
test.test5()    # 导入的文件名.方法名
test.test6()
# import test
# from test import *    ——这两句加起来,就可以直接调用方法,不需要文件名.方法名

#   6.8 模块其他用法
#   (1)仅使用模块中的一个方法:from 导入的文件名 import 导入文件中存在的方法       ——as用于起别名(一样可以给模块取别名)
from test import test5 as othername, test6
othername()
test6()

#   6.8 函数的递归调用
def f(n):
    if n == 1:
        return 1
    else:
        return f(n-1) + n
print(f(5))


七、类

#   七、类(首字母大写)
#   7.1 创建类
#   __init__:用于定义类里面有哪些属性
class Person():
    def __init__(self, name, age, hobby):
        self.name = name                        # 左边是类的属性名(相当于为类添加属性),右边是属性值
        self.age = age
        self.hobby = hobby

    #   7.2 给类定义函数(添加行为)
    def eat(self):
        print(self.name+"eat something.")

    def behave(self):
        print("I'm singing.")

#   7.3 创建类的实例对象,并调用属性和方法
# person1 = Person.__init__('王俊凯', 19, '吉他')     ——报错
person1 = Person('王源', 18, '主持')

print(person1.name)
person1.eat()

#   7.4 给类的属性添加默认值
class Car():
    def __init__(self, maker, model, year):
        self.maker = maker
        self.model = model
        self.year = year
        self.mileage = 0    # 默认值

    def describe(self):
        print(self.year + ' ' + self.maker + ' ' + self.model)

    def get_mileage(self):
        print("已跑" + str(self.mileage) + "公里")

    def set_mileage(self, mileage):
        # if self.mileage < mileage:
            self.mileage = mileage

    def add_mileage(self, mileage):
        if mileage >= 0:
            self.mileage += mileage

car1 = Car('奥迪', 'K1', '2010')
car1.describe()
car1.get_mileage()

#   7.5 修改属性的值
#   (1)直接修改
car1.mileage = 100
car1.get_mileage()
#   (2)通过在类里面定义set方法
car1.set_mileage(200)
car1.get_mileage()

car1.add_mileage(50)
car1.get_mileage()

#   7.6 继承
class Teacher(Person):      # 代表Person是Teacher的父类
    def __init__(self, name, age, hobby, title):
        super().__init__(name, age, hobby)       # 调用父类里面的初始化方法、构造方法
        self.title = title       # 添加特有属性

    # 添加特有方法
    def teach(self):
        print(self.title + "is teaching")

    # 重写方法
    def eat(self):
        print(self.title+"去食堂吃饭")

#   7.7 继承添加独有的属性和方法重写
t1 = Teacher("wjk", 25, "guitar", "高级教师")
t1.eat()
t1.teach()

#   7.8 将一个类的实例作为另一个类的属性
# class Role():
#     def __init__(self, name, lv, role_type, damage, bullet_count):
#         self.name = name
#         self.lv = lv
#         self.role_type = role_type
#         self.damage = damage
#         self.bullet_count = bullet_count
#
#     def move(self):
#         print(self.name + " is running")
#
#     def attack(self):
#         self.bullet_count -= 1
#         print("发射子弹,攻击力为" + str(self.damage))
# role = Role('aaa', 10, '魔法师', 20, 20)
# role.move()
# role.attack()

class Weapon():
    def __init__(self, damage, bullet_count):
        self.damage = damage
        self.bullet_count = bullet_count

    def attack(self):
        self.bullet_count -= 1
        print("发射子弹,攻击力为" + str(self.damage))

class Role():
    def __init__(self, name, lv, role_type, damage, bullet_count):
        self.name = name
        self.lv = lv
        self.role_type = role_type
        self.weapon = Weapon(damage, bullet_count)      #   将Weapon的实例作为Role的属性

    def move(self):
        print(self.name + " is running")

    def attack(self):
        self.weapon.attack()        # 调用Weapon的方法
role = Role('aaa', 10, '魔法师', 20, 20)
role.move()
role.attack()


#   7.9 通过模块导入类
#   (1)直接导入整个文件
# import weapon
# class Role():
#     def __init__(self, name, lv, role_type, damage, bullet_count):
#         self.name = name
#         self.lv = lv
#         self.role_type = role_type
#         self.weapon = weapon.Weapon(damage, bullet_count)      #   导入的文件名.类名()
#
#     def move(self):
#         print(self.name + " is running")
#
#     def attack(self):
#         self.weapon.attack()        # 调用Weapon的方法
#
# role = Role('aaa', 10, '魔法师', 20, 20)
# role.move()
# role.attack()

#   (2)导入文件中某个类
from weapon import Weapon          # 导入所有类则用*
class Role():
    def __init__(self, name, lv, role_type, damage, bullet_count):
        self.name = name
        self.lv = lv
        self.role_type = role_type
        self.weapon = Weapon(damage, bullet_count)      #   将Weapon的实例作为Role的属性

    def move(self):
        print(self.name + " is running")

    def attack(self):
        self.weapon.attack()        # 调用Weapon的方法

role = Role('aaa', 10, '魔法师', 20, 20)
role.move()
role.attack()

八、文件操作和异常处理

#   八、文件操作和异常处理
#   8.1 得到工作目录和创建目录
#   (1)得到工作目录:os.getcwd()
import os
print(os.getcwd())
#   (2)修改工作目录:os.chdir()
# os.chdir("c:\\windows")

# os.makedirs("file1\\file2")     # 利用相对路径创建文件夹,即在当前目录下创建file1文件夹,然后在file1文件夹下创建file2文件夹
# os.makedirs("C:/Users")     # 利用绝对路径创建文件

#   8.2 读取文本文件
with open('game.txt') as file:
    content = file.read()       # 读取整个文件
    print(content)

with open('game.txt') as file:
    for line in file:
        print(line.rstrip())       # 逐行读取       rstrip()用于消除空白行

with open('game.txt') as file:
    listGame = file.readlines()       # 读取成列表

for line in listGame:
    print(line.rstrip())

#   8.2 文本文件的数据写入
# with open('game.txt', 'w') as file:     # 不写或写r默认为读取,w代表写入     ——会清空原来的内容,重新写入
#     file.write('www.baidu.com')

with open('game.txt', 'a') as file:     # a代表写入     ——在文本末尾追加新的字符串
    file.write('\nwww.baidu.com')

#   8.3 异常处理
try:
    print(9/0)          # try跟 有可能出现异常的代码    如果某一行出现异常,try中的后面的代码都不会执行
except ZeroDivisionError:
    print('代码异常')       # except跟 如果出异常,则应执行的代码  ——不会影响后续代码的执行
else:                       # else为不出现异常时执行的代码,不过不是很必要
    print()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值