python入门篇03 基础案例 python版与java版 语法不同之处

2023-08-11 14:51:52

目录

1. 前言: 

  -> 上篇传送门: python入门篇02 python的语法基础

2. 案例: pzy超市的收银系统(控制台输入版)

-> 2.0 需求摘要:

-> 2.1 python代码答案:  <直接可以运行>

-> 2.2 java代码答案: <必须有main方法>

2.3 两种代码运行的结果: (一样的结果)

---> 2.3.2 python运行结果(图示)

 ---> 2.3.3 java运行结果(图示)

 3. 下篇传送


1. 前言: 

  -> 上篇传送门: python入门篇02 python的语法基础

序号基础说明
1.1变量声明, 注释声明,数据类型, 类型转换
1.2关键字 数学运算符 赋值运算符
1.3字符串定义(三种) 字符串拼接 格式化 浮点数四舍五入写法
1.4控制台输入input()方法  随机数random, import导包
1.5布尔类型 比较运算符 if逻辑判断 if elif else 使用 嵌套if使用
1.6案例总结: 随便编了一个案例 包含上诉所有内容

2. 案例: pzy超市的收银系统(控制台输入版)

-> 2.0 需求摘要:

请输入购买的苹果和橘子是多少斤
   已知苹果三块钱一斤,橘子五块钱一斤,
   现在有活动一: 总价超过20打九折 大于等于50打八折,
   最新推广活动: 办理会员卡 超过50的折上折 (9折) 也就是 超过50的先打8折 然后再打9折
   整体结算后 输出小票: 包含(用户本次消费的金额,折扣金额,折扣率等 其他自己定义)

"""
4. 案例---> pzy超市的收银系统(控制台输入版)<python版>
* 随便编的
* (大家看看跟java和区别)个人感觉 没有java强类型那么舒服呢  
 
   
* 需求: 请输入购买的苹果和橘子是多少斤
   已知苹果三块钱一斤,橘子五块钱一斤,
   现在有活动一: 总价超过20打九折 大于等于50打八折,
   最新推广活动: 办理会员卡 超过50的折上折 (9折) 也就是 超过50的先打8折 然后再打9折
   整体结算后 输出小票: 包含(用户本次消费的金额,折扣金额,折扣率等 其他自己定义)
   
目的: 计算总价和折扣金额(注意 float并不适合金融类计算 如果出现精度丢失请忽略)
"""

-> 2.1 python代码答案:  <直接可以运行>

 安装python环境(python.exe) 用pycharm,idea ,cmd都可以运行

# 4.1 声明变量
apple_price = 3
orange_price = 5
real_price = 0
discount_price = 0
discount_rate = 0

# 加一个会员卡信息(正常是数据库操作)
vip_card_num = 2023010100001
vip_discount_rate = 0.9

# 4.2 接收控制台值
print("欢迎来到pzy小店~~~")
apple_buy_count = int(input("请输入购买的苹果斤数: \n"))
orange_buy_count = int(input("请输入购买的橘子斤数: \n"))

# 4.3 金额计算(接收字符串需要转换一下)
sum_price = int(apple_price * apple_buy_count + orange_price * orange_buy_count)

# 判断条件 总原价大于20 计算折扣价格
if sum_price > 20:
    discount_rate = 0.9
    real_price = sum_price * discount_rate
    discount_price = sum_price - real_price

# 判断条件 总原价大于50 计算折扣价格
# elif sum_price > 50:  # else if 的python写法 elif
if sum_price > 50:
    discount_rate = 0.8

    # 如果超过50 并且有会员卡号 在原来基础上 再打9折
    if vip_card_num == int(input("请输入会员卡号: \n")):
        # 重新赋值给折扣率 折上折了
        discount_rate = discount_rate * vip_discount_rate

        real_price = sum_price * discount_rate
    else:
        print("未找到您的会员信息, 不能再次折扣!")
        real_price = sum_price * discount_rate

    discount_price = sum_price - real_price

# 输出结果: 细节一 字符串换行与java不同 细节二 浮点类型 需要保留小数位数
print(f"您好 您在超市购买清单如下: \n苹果: {apple_buy_count}斤, 橘子: {orange_buy_count}斤,\n"
      f"原价: %.2f元,\n实际支付: %.2f元, \n优惠金额: %.2f元, \n折扣是: %.2f折"
      % (sum_price, real_price, discount_price, discount_rate * 10))

print("\n欢迎下次再来~~~")

-> 2.2 java代码答案: <必须有main方法>

有java环境 jdk (java.exe) 用idea cmd都可以 但是需要编译成.class文件后才能运行

import java.util.Scanner;

/**
 * 4. 案例---> pzy超市的收银系统(控制台输入版)<java版>
 * * 随便编的
 * * (大家看看跟java和区别)个人感觉 没有java强类型那么舒服呢
 * * 需求: 请输入购买的苹果和橘子是多少斤
 * 已知苹果三块钱一斤,橘子五块钱一斤,
 * 现在有活动一: 总价超过20打九折 大于等于50打八折,
 * 最新推广活动: 办理会员卡 超过50的折上折 (9折) 也就是 超过50的先打8折 然后再打9折
 * 整体结算后 输出小票: 包含(用户本次消费的金额,折扣金额,折扣率等 其他自己定义)
 * <p>
 * 目的: 计算总价和折扣金额(注意 float并不适合金融类计算 如果出现精度丢失请忽略)
 *
 * @author pzy
 * @version 0.1.0
 * @description: TODO
 */
public class Test05 {
    public static void main(String[] args) {

        //控制台输入
        Scanner scanner = new Scanner(System.in);

        // 4.1 声明变量
        int applePrice = 3;
        int orangePrice = 5;
        float realPrice = 0F;
        float discountPrice = 0F;
        float discountRate = 0F;

        // 加一个会员卡信息(正常是数据库操作)
        Long vipCardNum = 2023010100001L;
        float vipDiscountRate = 0.9F;

        // 4.2 接收控制台值
        System.out.println("欢迎来到pzy小店~~~");

        System.out.println("请输入购买的苹果斤数: ");
        int appleBuyCount = scanner.nextInt();

        System.out.println("请输入购买的橘子斤数: ");
        int orangeBuyCount = scanner.nextInt();

        // 4.3 金额计算(接收字符串需要转换一下)
        float sumPrice = applePrice * appleBuyCount + orangePrice * orangeBuyCount;

        // 判断条件 总原价大于20 计算折扣价格
        if (sumPrice > 20) {
            discountRate = 0.9F;
            realPrice = sumPrice * discountRate;
            discountPrice = sumPrice - realPrice;
        }
        // 判断条件 总原价大于50 计算折扣价格
        // elif sumPrice > 50:  // else if 的python写法 elif
        if (sumPrice > 50) {
            discountRate = 0.8F;

            // 如果超过50 并且有会员卡号 在原来基础上 再打9折
            System.out.println("请输入会员卡号: ");
            if (vipCardNum == scanner.nextLong()) {
                // 重新赋值给折扣率 折上折了
                discountRate = discountRate * vipDiscountRate;

                realPrice = sumPrice * discountRate;
            } else {
                System.out.println("未找到您的会员信息, 不能再次折扣!");
                realPrice = sumPrice * discountRate;
                discountPrice = sumPrice - realPrice;
            }
        }

        // 输出结果: 细节一 字符串换行与java不同 细节二 浮点类型 需要保留小数位数
        System.out.printf("您好 您在超市购买清单如下: \n苹果: %s斤, 橘子: %s斤,\n" +
                        "原价: %.2f元,\n实际支付: %.2f元, \n优惠金额: %.2f元, \n折扣是: %.2f折\n",
                appleBuyCount, orangeBuyCount, sumPrice, realPrice, discountPrice, discountRate * 10);

        System.out.println("欢迎下次再来~~~");
    }
}

2.3 两种代码运行的结果: (一样的结果)

---> 2.3.1 总运行结果(文字) 

欢迎来到pzy小店~~~
请输入购买的苹果斤数: 
1
请输入购买的橘子斤数: 
10
请输入会员卡号: 
2023010100001
您好 您在超市购买清单如下: 
苹果: 1斤, 橘子: 10斤,
原价: 53.00元,
实际支付: 38.16元, 
优惠金额: 14.84元, 
折扣是: 7.20折

欢迎下次再来~~~

---> 2.3.2 python运行结果(图示)

 

 ---> 2.3.3 java运行结果(图示)

2.4 总结

---> 2.4.1 整体代码观感上

java的可读性更强 一板一眼的 

而python 更简洁 但由于类型是自动判断, 有时候需要转换一下

--->2.4.2 语法复杂度

>>>java的语法写法也是比较复杂的

就是上面一个小案例 就用到了很多java基础知识

访问控制修饰符public

静态修饰符static 

无返回值void 

数组 string[] args 

类class 

包package 

导包 import 以及

对象Scanner 控制台输入

8种基本类型中的四种(int long float boolean)

一种引用类型String 几相关操作

>>> python的写法对新手更加友好

三种数据类型

一个方法input() 则直接可以控制台输入

字符串相关操作

 相比之下 java上面的小案例 涉及到了java很多基础, 然而大部分在这案例里都没用上


 3. 下篇传送

循环

更多推荐

【python爬虫】—星巴克产品

文章目录需求爬取星巴克产品以及图片,星巴克菜单python爬虫爬取结果需求爬取星巴克产品以及图片,星巴克菜单网页分析:首先,需要分析星巴克官方网站的结构,了解菜单栏的位置、布局以及菜单项的标签或类名等信息。发送HTTP请求:使用Python的requests模块发送HTTPGET请求,获取星巴克网页的HTML内容。解析

爬虫异常处理技巧分享

在进行爬虫数据采集的过程中,我们常常会遇到网络波动和自动化验证等异常情况。这些问题可能导致爬虫运行中断或被识别为机器请求而受到限制。本文将分享一些实用的爬虫异常处理技巧,帮助您规避网络波动和自动化验证,提高数据采集的稳定性和成功率。一、处理网络波动1.设置重试机制:当爬取过程中遇到网络错误或超时,在合理的时间范围内进行

爬虫入门基础-Selenium反爬

在网络时代,爬虫作为一种强大的数据采集工具,被广泛应用于各行各业。然而,许多网站为了防止被恶意爬取数据,采取了各种反爬虫机制。为了能够成功地绕过这些机制,Selenium成为了爬虫领域的一把利器。本文将为你介绍爬虫入门基础,并重点探讨如何使用Selenium应对反爬虫的挑战。一、爬虫入门基础1、定义:爬虫是一种模拟浏览

minikube搭建k8s

环境:centos7,docker18minikube搭建k8s说明minikube是最接近原生kubernetes的本地单机版集群,支持大部分kubernetes功能,用于学习和开发k8s。支持Linux、Windows、Mac官网安装文档安装前提一台物理机或者虚拟机,物理机CPU大于2核vcpu、2G内存、20G磁

Java堆(Java Heap)

对于Java应用程序来说,Java堆(JavaHeap)是虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,Java世界里“几乎”所有的对象实例都在这里分配内存。在《Java虚拟机规范》中对Java堆的描述是:“所有的对象实例以及数组都应

ZMQ协议

一、ZMQ特点普通的socket是端对端的关系,ZMQ是N:M的关系,socket的连接需要显式地建立连接,销毁连接,选择协议(TCP/UDP)和错误处理,ZMQ屏蔽了这些细节,像是一个封装了的socket库,让网络编程变得更简单。ZMQ不光用于主机与主机之间的socket通信,还可以是线程和进程之间的通信。ZMQ提供

Zookeeper集群 + Kafka集群

ZookeeperZookeeper概述Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目Zookeeper工作机制Zookeeper从设计模式角度来理解:是一个,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zo

Vue路由与nodes的环境配置

一,Vue路由什么是Vue路由?Vue路由是Vue.js的一部分,是一个官方的Vue.js插件,用于管理单页面应用程序的路由。它允许您在应用程序中使用URL路径和参数来管理不同的页面视图,而无需刷新页面。使用Vue路由,您可以轻松地设置和管理客户端路由,包括嵌套和动态路由。它还提供了一些高级功能,例如路由守卫,用于在页

leetcode646. 最长数对链(java)

最长数对链题目描述贪心解法二动态规划dp题目描述难度-中等leetcode646.最长数对链(java)给你一个由n个数对组成的数对数组pairs,其中pairs[i]=[lefti,righti]且lefti<righti。现在,我们定义一种跟随关系,当且仅当b<c时,数对p2=[c,d]才可以跟在p1=[a,b]后

HTML 学习笔记(基础)

它是超文本标记语言,由一大堆约定俗成的标签组成,而其标签里一般又有一些属性值可以设置。W3C标准:网页主要三大部分结构:HTML表现:CSS行为:JavaScript<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metaname="viewpor

配置 iSCSI 服务并实现客户端自动挂载块设备

文章目录前言1.iSCSI简介2.iSCSIServer端配置2.1.添加磁盘2.2.安装targetcli软件包2.3.创建块设备2.4.创建Target2.5.创建LUN2.6.创建ACL2.7.配置门户创建监听2.8.查看全部配置信息并保存退出2.9.启用Target服务3.iSCSIClient端配置3.1.安

热文推荐