A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Nicepp

初级黑马

  • 黑马币:17

  • 帖子:5

  • 精华:0

© Nicepp 初级黑马   /  2018-8-2 00:10  /  760 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


变量类型的转换——买苹果问题升级版# 定义苹果的单价
price = float(input("请输入苹果的单价:"))
# 定义苹果的重量
weight = float(input("请输入苹果的重量:"))
# 计算苹果的价格
money = price * weight - 20
print(money)信息录入——input函数name = input("姓名:")
gender = input("性别:")
age = input("年龄:")
company = input("单位:")
number = input("联系方式:")判断——if语句number = int(input("请输入数字1-7:"))

if 1 <= number <= 7:
    if number == 6 or number == 7:
        print("周末")
    else:
        print("工作日")
else:
    print("输入错误")
格式化输出price = 7.899
weight = 3.688
money = price * weight
print("苹果的单价 %.2f, 购买了 %.2f, 总价为 %.2f" % (price, weight, money))逻辑运算符#    - 要求只要有一门成绩 > 60 分就算合格
# 3. 练习3: 定义一个布尔型变量 is_employee,编写代码判断是否是本公司员工
#    - 如果不是提示不允许入内
age = 18
if 0 <= age <= 120 :
    print("年龄正确")
else:
    print("年龄不正确")
python_score = 50
c_score = 70
if python_score > 60 or c_score > 60:
    print("合格")
else:
    print("不合格")
is_employee = True
if not is_employee:  # bool型
    print("非本公司职员不得入内")
else:
    print("欢迎")
剪刀石头布综合案例import random
# 1. 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3)
player = int(input("石头(1)/剪刀(2)/布(3)输入的是:"))
# 2. 电脑 随机 出拳 —— 先假定电脑只会出石头,完成整体代码功能
computer = random.randint(1, 3)
# 3. 比较胜负
if ((player == 1 and computer == 2)
        or (player == 2 and computer == 3 )
        or (player == 3 and computer == 1)):
    print("恭喜你,你赢了")
elif player == computer:
    print("平局")
else:
    print("你输了,真可惜")
打印小星星# # 打印五行小星星
# row = 1
# while row <= 5:
#     print("*" * row)
#     row += 1
# 如果不希望末尾增加换行,可以在 print 函数输出内容的后面增加 , end=""
# print("*", end="")
# print("*")


row = 1
while row <= 5:
     # 假设 python 没有提供字符串 * 操作
     # 在循环内部,再增加一个循环,实现每一行的 星星 打印
    col = 1
    while col <= row:
        print("*", end="")
        col += 1
# 每一行星号输出完成后,再增加一个换行
    print("")
    row += 1
九九乘法表row = 1
while row <= 9:
    col = 1
    while col <= row:
        print("%d * %d = %d" % (row, col, col*row), end="\t")
        col += 1
    # print("%d" % row)
    print("")
    row += 1

函数返回值"""定义函数"""


def sum_all(num1, num2):
    # 两数相加
    result = num1 + num2
    # 返回值
    return result
# 在调用函数的地方新建变量接受返回值
sum_result = sum_all(1, 10)
print("%d" % sum_result)
高级变量类型——列表的增删改查name_list = ["zhangsan", "lisi", "wangwu"]
# 增
name_list.insert(3, "小李")  # 增加指定位置的数据
name_list.append("小平")  # 末位增加数据
name_list.extend(["小李", "小平"])  # 末位增加列表数据
# 减
name_list.remove("zhangsan")  # 从前往后删除指定一个数据
name_list.pop()  # 先进后出,从末尾开始删除数据
name_list.pop(0)  # 指定位置删除数据
name_list.clear()  # 清空
# 查
print(name_list.index("zhangsan"))  # 查数据的索引(位置)
print(name_list[0]) # 查索引所在位置的值
# 改
name_list[1] = "李四"  # 修改指定位置的数据
# 统计
print(len(name_list)) # 统计列表数据长度
print(name_list.count("wangwu"))  # 统计数据出现的次数
# 排序
name_list.sort()  # 升序
name_list.sort(reverse=True)  # 降序
name_list.reverse()  # 反转排序

print(name_list)
遍历——while和for"""顺序的从列表中依次获取数据,每一次循环过程中,数据都会保存在
   my_name 这个变量中,在循环体北部可以访问到当前这一次获取到的数据

"""
name_list = ["zhangsan", "lisi", "wangwu"]
for my_name in name_list:
    print("我的名字是:%s" % my_name)

"""
while 循环
"""
l = len(name_list)

i = 0
while i < l:
    print(name_list)
    i += 1
元组——增删改查info_tuple = ("zhangsan", 18, 1.75)
print(type(info_tuple))
print(info_tuple[0])
empty_tuple = ()  # 定义一个空元组
print(type(empty_tuple))
single_tuple = (1,)  # 定义只含有一个元素的元组,单个元素后需要加一个逗号
print(type(single_tuple))


# 取值和取索引
print(info_tuple[0])
print(info_tuple.index("zhangsan"))

# 统计计数
print(info_tuple.count("zhangsan"))

# 统计元组的长度
print(len(info_tuple))

列表和元组的转换name_list = ["zhangsan "]
print(tuple(name_list))
info_tuple = ("zhangsan",)
print(list(info_tuple))
字典# 定义一个字典 注意:建与值之间用冒号分开,键值对之间用逗号分开

xiaoming = {"name": "小明",
            "gender": True,
            "height": 1.78,
            "weight": 77.50}

# 取值
print(xiaoming["name"])  # 取值都是[]

# 增加/修改
xiaoming["age"] = 18  # 输入已存在的key就是修改
xiaoming["name"] = "小姚"  # 输入不存在的key就是添加

# 删除
xiaoming.pop("name")

print(xiaoming)


# 统计字典键值对的数量
print(len(xiaoming))

# 合并字典
xiaoyao = {"age": 15}
xiaoming.update(xiaoyao)  # 无返回值需重新再输出
print(xiaoming)

# 字典清空
print(xiaoming.clear())

字典的遍历xiaoming = {"name": "xiaoming",
            "age": "15"}
# 变量k是每一次循环中,获取到的键值对的key
for k in xiaoming:
    print("%s - %s" % (k, xiaoming[k]))
字符串的方法str1 = "hello hello"
print(len(str1))
print(str1.count("ll"))
print(str1.count("abc"))
print(str1.index("h"))
print(str1[0])
# 识别字符串中是否含有数字
str1 = "一千零一"
print(str1.isdecimal())
print(str1.isdigit())
print(str1.isnumeric())

# replace 替换并不更改原来的字符串,只是新建了一个字符串

str1 = "hello world"
print(str1.replace("world", "python"))
print(str1)

拆分拼接poem_str = "登黄鹤楼\t 王之涣 \t 白日依山尽 \t\n"
print(poem_str)

# 拆分字符串
poem_list = poem_str.split()  # 有返还值需要新建一个变量接受
print(poem_list)

# 拼接字符串
result = " ".join(poem_list)  # 有返还值需要新建一个变量接
print(result)


切片"""- 1. 截取从 2 ~ 5 位置 的字符串
- 1. 截取从 2 ~ 末尾 的字符串
- 1. 截取从 开始 ~ 5 位置 的字符串
- 1. 截取完整的字符串
- 1. 从开始位置,每隔一个字符截取字符串
- 1. 从索引 1 开始,每隔一个取一个
- 1. 截取从 2 ~ 末尾 - 1 的字符串
- 1. 截取字符串末尾两个字符
- 1. 字符串的逆序(面试题)
"""

num_str = "0123456789"
print(num_str[2:6])  # 截取从 2 ~ 5 位置 的字符串
print(num_str[2:])  # 截取从 2 ~ 末尾 的字符串
print(num_str[:6])  # 截取从 开始 ~ 5 位置 的字符串
print(num_str[:])  # 截取完整的字符串
print(num_str[::2])  # 从开始位置,每隔一个字符截取字符串
print(num_str[1::2])  # 从索引 1 开始,每隔一个取一个
print(num_str[2:-1])  # 截取从 2 ~ 末尾 - 1 的字符串
print(num_str[-2:])  # 截取字符串末尾两个字符
print(num_str[::-1])  # 字符串的逆序(面试题)
函数的返回值问题def measure():
    """测量温度和湿度"""

    print("测量开始")
    temp = 39
    wetness = 50
    print("测量结束")
    # 元组——可以包含多个数据,因此可以使用元组让函数一次返回多个值
    # 如果返回的是元组小括号可以省略 return (temp, wetness)
    return temp, wetness

result = measure()
print(result)


# 如果函数返回的类型是元组,同时希望单独的处理元组中的元素
# 可以使用多个变量,一次接受函数的返回结果
# 注意:使用多个变量接收结果时,变量的个数应该和元组中元素的个数相同
gl_temp, gl_wetness = measure()
print(gl_temp)
print(gl_wetness)

可变量与不可变量# 在 python 中,列表变量调用 += 本质上是在执行列表变量的 extend 方法,不会修改变量的引用
def demo(num, num_list):
    print("函数开始")

    num += num
    # num_list = num_list + num_list与num_list += num_list不同
    # num_list += num_list本质上是extend方法:num_list.extend
    num_list += num_list
    print(num)
    print(num_list)
    print("函数完成")

gl_num = 9
gl_list = [1, 2, 3]
demo(gl_num, gl_list)
print(gl_num)
print(gl_list)

缺省参数gl_list = [6, 3, 9]
#
# # 默认按照升序排序
# # gl_list.sort()
#
# # 如果升序需要引入reverse
# gl_list.sort(reverse=True)
# #
# print(gl_list)
gl_list.reverse()
print(gl_list)


def print_info(name, gender=True):
    """
   
    :param name: 姓名
    :param gender: True 男生 False女生
    """
    gender_text = "男生"

    if not gender:
        gender_text = "女生"
    print("%s 是 %s" % (name, gender_text))

# 提示在指定缺省参数时应该使用最常见的值
print_info("xiaoming")
print_info("xiaomei", False)


def gender_info(name, title="", gender=True):
    """

    :param name: 姓名
    :param title: 职位
    :param gender: True 男生 False 女生
    :return:
    """
    gender_text = "男生"
    if not gender:
        gender_text = "女生"
    print("[%s] %s 是 %s" % (title, name, gender_text))


gender_info("xiaoming", gender=False)
gender_info("xiaomei")

多值参数def demo(num, *nums, **person):

    print(num)
    print(nums)
    print(person)

demo(1)
demo(1, 2, 3, 4, name="xiaoming", age=18)


# 多值参数应用求多个整数和


def sum_all(*num):
    sum = 0
    for n in num:
        sum += n
    return sum

result = sum_all(1, 3, 9)
print(result)

拆包
def demo(*args, **kwargs):

    print(args)
    print(kwargs)

gl_nums = (1, 2, 3)
gl_dict = {"name": "小明", "age": 18}
# 拆包:在元组变量前加*  在字典变量前加**
demo(*gl_nums, **gl_dict)
demo(1, 2, 3, name="小明", age=18)

递归# def sum_number(num):
#     print(num)
#     # 递归的出口,当参数满足条件时不再执行函数
#     if num == 1:
#         return
#     # 自己调用自己就是递归
#     sum_number(num-1)
#     print(num)
# sum_number(3)


def sum_numbers(num):
    # 1.出口
    if num == 1:
        return 1
    # 数字的累加num+(1.。。。。num-1)
    # 假设sum_numbers 能够正确处理1.。。num-1
    temp = sum_numbers(num-1)
    # 两个数字相加(当前的num+tmp)
    return num + temp

result = sum_numbers(100)
print(result)

烤地瓜问题
# 定义一个地瓜类
class Sweetpotato:
    # 设置默认值
    def __init__(self):
        self.cookedlevel = 0
        self.cookedstring = "生的"
        self.condiments = []

    # 设置烤地瓜方法
    def cook(self, time):
        self.cookedlevel += time
        if self.cookedlevel > 8:
            self.cookedstring = "烤焦了"
        elif self.cookedlevel > 5:
            self.cookedstring = "烤好了"
        elif self.cookedlevel > 3:
            self.cookedstring = "半生不熟"
        else:
            self.cookedstring = "生的"
    def __str__(self):

        return ""


my_sweetpotato = Sweetpotato()
print(my_sweetpotato.condiments)
print(my_sweetpotato.cookedstring)
print(my_sweetpotato.cookedlevel)
面向对象——私有问题和私有方法
class Women:
    def __init__(self, name):
        self.name = name
        self.__age = 18

    def __secret(self):

        print("%s的年龄是%d" % (self.name, self.__age))

xiaomei = Women("小美")
print(xiaomei._Women__age)  # 在名称前面加上 _类名 => _类名__名称(伪私有属性和私有方法)
xiaomei._Women__secret()
# print(xiaofang.__age) 不能直接调用
# xiaofang.__secret()
继承
class Animal:
    def eat(self):
        print("吃")

    def drink(self):
        print("喝")


class XiaoTianQuan(Animal):
    def fly(self):
        print("飞")

xiaotianquan = XiaoTianQuan()
xiaotianquan.fly()
xiaotianquan.eat()
xiaotianquan.drink()
多态
class Dog(object):

    def __init__(self, name):
        self.name = name

    def game(self):
        print("%s玩耍" % self.name)


class Xiaotianquan(Dog):

    def game(self):
        print("%s飞到天上去" % self.name)


class Person(object):

    def __init__(self, name):
        self.name = name

    def game_with_dog(self, dog):
        print("%s和%s快乐的玩耍" % (self.name, dog.name))

        # 让狗玩耍
        dog.game()

# 创建一个狗对象
# wangcai = Dog("旺财")
wangcai = Xiaotianquan("飞天旺财")

# 创建一个小明对象
xiaoming = Person("小明")

# 让小明调用和狗玩
xiaoming.game_with_dog(wangcai)
捕获未知错误类型
try:
    num = int(input("请输入一个整数:"))
    result = 8 / num
    print(result)

except ValueError:
    print("请输入正确的数字")

except ZeroDivisionError:
    print("除0错误")

except Exception as result:
    print("未知错误 %s" % result)

else:
    print("没有错误才能执行")

finally:
    print("无论正确与否都能执行")

摆放家具模型
class HouseItem:

    def __init__(self, name, area):

        self.name = name
        self.area = area

    def __str__(self):

        return "[%s] 占地 %.2f" % (self.name, self.area)


class House:

    def __init__(self, type, area):

        self.type = type
        self.area = area

        # 剩余面积
        self.free_area = area

        # 家具名称列表
        self.item_list = []

    def __str__(self):
        return ("户型:%s\n总面积:%.2f[剩余:%.2f]\n家具:%s" %
                (self.type, self.area,
                 self.free_area, self.item_list))

    def add_item(self, item):

        print("要添加%s" % item)
        # 1.判断家具的面积
        if item.area > self.free_area:
            print("%s的面积太大了,无法添加" % item.name)

            return
        # 2. 将家具的名称添加到列表总
        self.item_list.append(item.name)

        # 3. 计算剩余面积
        self.free_area -= item.area

# 1. 创建家具
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)

print(bed)
print(chest)
print(table)

# 2. 创建房子对象
my_house = House("两室一厅", 60)

my_house.add_item(bed)
my_house.add_item(chest)
my_house.add_item(table)

print(my_house)

士兵突击问题
class Gun:
    def __init__(self, model):

        # 枪的型号
        self.model = model

        # 子弹数量
        self.bullet_count = 0

    def add_bullet(self, count):

        self.bullet_count += count

    def shoot(self):

        # 1.判断子弹数量
        if self.bullet_count <= 0:
            print("[%s]没有子弹了" % self.model)

            return

        # 2.发射子弹
        self.bullet_count -= 1

        # 3.提示发射信息

        print("[%s]突突突...[%d]" % (self.model, self.bullet_count))

    def __str__(self):
        return "恭喜配枪成功"


class Soldier:
    def __init__(self, name):
        # 1. 定义新兵的姓名
        self.name = name
        # 2.枪
        self.gun = None

    def fire(self):

        # 判断是否有枪
        if self.gun is None:

            print("[%s]还没有枪。。。" % self.name)

            return
        # 高喊口号
        print("冲啊。。。[%s]" % self.name)

        # 让枪装填子弹
        self.gun.add_bullet(50)

        # 让枪发射子弹
        self.gun.shoot()

# 1. 创建枪对象
ak47 = Gun("AK47")

# 2. 创建许三多
xusanduo = Soldier("许三多")

xusanduo.gun = ak47

xusanduo.fire()

print(xusanduo.gun)

名片管理系统cards-main:from hm_名片管理 import cards_tool

while True:

    cards_tool.show_menu()
    action = input("请选择操作功能:")

    print("您选择的操作是:%s" % action)

    # 根据用户输入决定后续的操作
    if action in ["1", "2", "3"]:
        if action == "1":
            print(cards_tool.new_card())
        elif action == "2":
            print(cards_tool.show_all())
        elif action == "3":
            print(cards_tool.search_card())

    elif action == "0":
        print("欢迎再次使用【名片管理系统】")

        break
    else:
        print("输入错误,请重新输入")

card_list = []


def show_menu():

    """显示菜单
    """
    print("1. 新建名片")
    print("2. 显示全部")
    print("3. 查找名片")
    print("0. 退出系统")


def new_card():

    """新建名片
    """
    print("-" * 50)
    print("功能:新建名片")
# 1. 提示用户输名片的详细信息

    name_str = input("请输入姓名:")
    phone_str = input("请输入电话:")
    qq_str = input("请输入QQ:")
    email_str = input("请输入电子邮件:")
# 2. 使用信息建立名片字典
    card_dict = {"name": name_str,
                "phone": phone_str,
                 "qq": qq_str,
                "email": email_str}
# 3. 将名片字典添加到列表中
    card_list.append(card_dict)
    print(card_list)

# 4. 提示用户添加成功
    print("用户%s添加成功" % name_str)


def show_all():

    """显示全部
    """
    print("-" * 50)
    print("功能:显示全部")

    # 打印表头
    for name in ["姓名", "电话", "qq", "邮箱"]:
        print(name, end="\t\t")

    print("")
    # 打印分割线
    print("=" * 50)

    for card_dict in card_list:
        print("%s\t\t%s\t\t%s\t\t%s\t\t" % (card_dict["name"],
                                            card_dict["phone"],
                                            card_dict["qq"],
                                            card_dict["email"]))

    if len(card_list) == 0:
        print("提示:没有任何记录")

        return


def search_card():

    """搜索名片
    """
    print("-" * 50)
    print("功能:搜索名片")

    find_name = input("请输入要查找的名字:")

    for card_dict in card_list:
        if card_dict["name"] == find_name:
            print("姓名\t\t\t电话\t\t\tqq\t\t\t邮箱")  # 建立标题排面
            print("=" * 50)
            print("%s\t\t\t%s\t\t\t%s\t\t\t%s" % (
                card_dict["name"],
                card_dict["phone"],
                card_dict["qq"],
                card_dict["email"]))  # 输出字典中查找的值并排好
            print("-" * 50)

            # TODO 针对找到的名片进行修改删除
            deal_card(find_name)

            break
    else:
        print("没有找到%s" % find_name)
# 增加名片操作函数:修改删除


def deal_card(find_dict):

    print(find_dict)

    action_str = input("请输入要进行的操作: "
                       "[1]修改 [2]删除 [0]返回上级菜单")

    if action_str == "1":
        find_dict["name"] = input_card_info("姓名:")
        find_dict["phone"] = input_card_info("电话:")
        find_dict["qq"] = input_card_info("qq:")
        find_dict["email"] = input_card_info("邮件:")

        print("%s的名片修改成功" % find_dict["name"])

    elif action_str == "2":
        card_list.remove(find_dict)

        print("删除成功")


def input_card_info(dict_value, tip_message):
    """
   
    :param dict_value:
    :param tip_message:
    :return:
    """
    # 提示用户输入内容
    result_str = input(tip_message)

    # 针对用户输入进行判断,如果用户输入了内容则直接返回结果
    if len(result_str) > 0:
        return result_str
    # 如果用户没有输入内容,返回 `字典中原有的值`
    else:
        return dict_value


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马