码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 1.0 Python 标准输入与输出


    合集 - 灰帽黑客:攻守道(83)
    1.1.13 导出表劫持ShellCode加载09-012.1.12 进程注入ShellCode套接字09-013.1.10 内存ShellCode注入与格式化08-314.1.9 动态解密ShellCode反弹08-315.1.8 运用C编写ShellCode代码08-306.1.7 完善自定位ShellCode08-307.1.6 编写双管道ShellCode08-298.1.5 编写自定位ShellCode弹窗08-299.1.4 编写简易ShellCode弹窗08-2810.1.3 Metasploit 生成SSL加密载荷08-2811.1.1 Metasploit 工具简介08-2812.5.14 汇编语言:仿写Switch选择结构08-2413.5.13 汇编语言:仿写For循环语句08-2414.5.12 汇编语言:仿写While循环语句08-2415.5.11 汇编语言:仿写IF条件语句08-2416.5.10 汇编语言:汇编过程与结构08-2417.5.9 汇编语言:浮点数操作指令08-2318.5.8 汇编语言:汇编高效除法运算08-2319.5.7 汇编语言:汇编高效乘法运算08-2320.5.6 汇编语言:汇编高效数组寻址08-2321.5.5 汇编语言:函数调用约定08-2222.5.4 汇编语言:算数运算指令集08-2223.5.3 汇编语言:字符串操作指令08-2224.5.2 汇编语言:标志位测试指令08-2225.5.1 汇编语言:汇编语言概述08-2226.4.9 C++ Boost 命令行解析库08-2227.4.8 C++ Boost 应用JSON解析库08-2228.4.7 C++ Boost 多线程并发库08-2129.4.6 C++ Boost 函数绑定回调库08-2130.4.5 C++ Boost 文件目录操作库08-2131.4.4 C++ Boost 数据集序列化库08-2132.4.3 C++ Boost 日期时间操作库08-1833.4.2 C++ Boost 内存池管理库08-1834.4.1 C++ Boost 字符串处理库08-1835.11.1 C++ STL 应用字典与列表08-1736.10.1 C++ STL 模板适配与迭代器08-1737.9.1 C++ STL 排序、算数与集合08-1738.8.1 C++ STL 变易拷贝算法08-1639.7.1 C++ STL 非变易查找算法08-1640.6.1 C++ STL 序列映射容器08-1641.5.1 C++ STL 集合数据容器08-1642.4.1 C++ STL 动态链表容器08-1643.3.1 C++ STL 双向队列容器08-1644.2.1 C++ STL 数组向量容器08-1645.1.1 C++ STL 字符串构造函数08-1646.7.5 C/C++ 实现链表队列08-1547.7.4 C/C++ 实现链表栈08-1548.7.3 C/C++ 实现顺序栈08-1549.7.2 C/C++ 实现动态链表08-1550.7.1 C/C++ 实现动态数组08-1551.9.0 Python 内置模块应用08-1452.8.0 Python 使用进程与线程08-1453.7.0 Python 面向对象编程08-1454.6.0 Python 使用函数装饰器08-1455.5.0 Python 定义并使用函数08-1356.4.0 Python 变量与作用域08-1357.3.0 Python 迭代器与生成器08-1258.2.0 Python 数据结构与类型08-1159.21.1 使用PEfile分析PE文件08-10
    60.1.0 Python 标准输入与输出08-09
    61.1.8 运用C编写ShellCode代码07-1362.5.2 基于ROP漏洞挖掘与利用07-1263.5.1 缓冲区溢出与攻防博弈07-1264.2.0 熟悉CheatEngine修改器07-1165.4.9 x64dbg 内存处理与差异对比07-1166.4.10 x64dbg 反汇编功能的封装07-1167.4.8 x64dbg 学会扫描应用堆栈07-1068.4.7 x64dbg 应用层的钩子扫描07-1069.4.6 x64dbg 内存扫描与查壳实现07-0970.4.5 x64dbg 探索钩子劫持技术07-0971.4.4 x64dbg 绕过反调试保护机制07-0872.4.3 x64dbg 搜索内存可利用指令07-0773.4.2 x64dbg 针对PE文件的扫描07-0774.4.1 探索LyScript漏洞挖掘插件07-0675.1.5 为x64dbg编写插件07-0676.1.1 熟悉x64dbg调试器07-0677.1.7 完善自定位ShellCode后门07-0578.1.6 编写双管道ShellCode后门07-0479.1.5 编写自定位ShellCode弹窗07-0380.1.4 编写简易ShellCode弹窗07-0281.1.3 Metasploit 生成SSL加密载荷07-0182.1.1 Metasploit 工具简介06-3083.2.1 PE结构:文件映射进内存09-04
    收起

    python 是一种高级、面向对象、通用的编程语言,由Guido van Rossum发明,于1991年首次发布。python 的设计哲学强调代码的可读性和简洁性,同时也非常适合于大型项目的开发。python 语言被广泛用于Web开发、科学计算、人工智能、自动化测试、游戏开发等各个领域,并且拥有丰富的第三方库和工具,使得python成为广泛应用的语言之一。同时,由于其开放性和可移植性,python在跨平台应用、开源软件开发和云计算等领域也被广泛使用。

    • python语言官网:https://www.python.org/

    python的安装非常容易,在Windows平台下读者只需要去python官方下载与之对应的版本即可,目前python的版本为python 3.11.3如下图所示读者可点击Download python 3.11.3下载最新版本;

    当读者下载好以后,只需要点击安装包,依次点击下一步则可将python安装到您的电脑中;

    python 中的标准输入和输出是指用于读取和写入数据的默认流(stream),也称为 stdin 和 stdout。这些流可以是屏幕输入和输出,也可以是文件、管道等。

    • 标准输入:通常是用户控制台上的输入流,用于读取用户输入的数据。在python中,可以使用 input() 函数来接收标准输入,默认情况下它接收一个字符串并返回该字符串。

    • 标准输出:通常是用户控制台上的输出流,用于向控制台打印数据。在python中,可以使用 print() 函数将数据输出到标准输出流。默认情况下,打印函数(print() 函数)会将数据以字符串的形式输出到控制台。

    1.1 标准输入功能

    任何一门编程语言都具备标准输入与输出功能,输入输出是任何一门编程语言的最终目的,在python中,输入数据可以使用内置的input()函数来实现,该函数可传入一个字符串并在输入前打印至屏幕中,函数返回一个字符串类型读者可通过一个变量来接收函数的返回值。

    >>> name = input("请输入你的名字:")
    请输入你的名字:lyshark
    
    >>> print("Hello " + name)
    Hello lyshark
    
    >>> age = input("请输入你的年龄:")
    请输入你的年龄:22
    >>> type(age)
    <class 'str'>
    
    # 强制类型转换
    >>> age1 = input("请输入你的年龄:")
    >>> age1 = int(age1)
    >>> type(age1)
    <class 'int'> 
    

    读者需要注意一点,标准输入函数只能获取字符串类型的参数,而有时我们需要使用例如整数浮点数等特殊参数,则需要通过强制转换类型的方法来实现对字符串的转换,例如将一个字符串参数转换为整数,可以使用int(age1)来实现,当然除了转换为整数,python还支持如下几个强制类型转换函数;

    • int(x) 将 x 转换为整数
    • float(x) 将 x 转换为浮点数
    • str(x) 将 x 转换为字符串
    • bool(x) 将 x 转换为布尔值

    如果尝试将无效的表达式或对象强制转换为某种数据类型,则可能引发TypeError或ValueError异常。因此,在进行强制转换之前,一定要确保输入的值是有效的,并且可以正确地转换为目标数据类型。

    1.2 标准输出功能

    有标准输入函数则必然有标准输出,在输出时读者可使用print()函数实现,该函数只需要传入一个输入字符串则可以实现输出,此外在某些时候如果我们不希望让该函数完成换行,则读者可在输入时增加end=""的参数传递实现,同时标准输入函数同样支持对字符串的动态替换功能。

    >>> string = "hello lyshark"
    >>> print(string)
    hello lyshark
    
    # 输出时不让其自动换行
    >>> print(string,)
    >>> print('hello', end = " ")
    
    >>> string = "the length of (%s) is %d"  %("hello lyshark",len("hello lyshark"))
    >>> print(string)
    the length of (hello lyshark) is 13
    
    >>> string = "hello {} --> age {}".format("lyshark",22)
    >>> print(string)
    hello lyshark --> age 22
    
    >>> string = "i am %(age).2f" %{"age":22}
    >>> print(string)
    i am 22.00
    

    在上述案例中,可以看到当我们需要动态替换字符串时可以将字符串中需要变化的位置通过%s(代表字符串)或者%d(代表整数)的方式进行占位,在该字符串的后面通过%()的方式对字符串依次进行填充,最终调用print输出替换后的数据,当让在新版本中读者可使用{}进行占位符填充,该方法无需自行执行参数类型,在使用时更加方便一些。

    1.3 格式化的用法

    在标准输出中我们简单介绍了一下格式化输出的一些功能,本次案例中将重点学习如何实现对格式化输出的控制,通常来说使用format输出可以实现很多输出细节的控制,但此方式输出还是比较麻烦,如下所示将带大家简单理解格式化函数的一些基本用法,读者通过此类方法应该能更好的掌握格式化输出的基本技巧与流程。

    >>> print("i am {0}, age {1}, really {0}".format("lyshark",22))
    i am lyshark, age 22, really lyshark
    
    >>> print("i am {name}, age {age}".format(**{"name":"lyshark","age":"22"}))
    i am lyshark, age 22
    
    >>> temp = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])
    >>> print(temp)
    i am 1, age 2, really 3
    
    >>> temp = "i am {:s}, age {:d}, money {:f}".format("lyshark", 18, 8.1)
    >>> print(temp)
    i am lyshark, age 18, money 8.100000
    
    >>> temp = "%r %r %r %r"
    >>> print(temp%(1,2,3,4))
    1 2 3 4
    
    >>> print("网站名称:{name},地址:{url}".format(name="myblog",url="www.lyshark.com"))
    网站名称:myblog,地址:www.lyshark.com
    
    >>> site={"name":"myblog","url":"www.lyshark.com"}
    >>> print("网站名称:{name} 地址:{url}".format(**site))
    网站名称:myblog 地址:www.lyshark.com
    
    >>> my_list = ['myblog','www.lyshark.com']
    >>> print("网站名称:{0[0]},地址:{0[1]}".format(my_list))
    网站名称:myblog,地址:www.lyshark.com
    

    当然上述方法输出字符串还是有些复杂,为了解决这个问题,python语言在3.6之后的版本中引入了f-string格式化功能,该方法的引入解决了格式化输出是繁琐的初始化工作,在使用时只需要在字符串的外围增加f即可表示需要输出动态字符串,此时读者只需要传入特定的变量并以{}包裹,即可实现动态输出。

    >>> name = "lyshark"
    >>> age = 25
    >>> number = 12.456
    
    # 可直接带入变量调用
    >>> f"hello, my name is {name} my age {age}"
    'hello, my name is lyshark my age 25'
    
    # 调用是指定函数
    >>> f"my name is {name.upper()}"
    'my name is LYSHARK'
    
    # 如需显示大括号,则需要两次括号
    >>> f"my name is {{name.upper()}}"
    'my name is {name.upper()}'
    
    # 浮点数保留位数
    >>> f"this float is {number:1.1f}"
    'this float is 12.5'
    
    # ^符号居中,宽度10位,十六进制整数(大写字母),显示0X前缀
    >>> number = 1234
    >>> f'number is {number:^#10X}'
    'number is   0X4D2   '
    
    # <符号左对齐,宽度10位,显示正号(+)定点数格式,2位小数
    >>> number = 1234.5678
    >>> f'number is {number:<+10.2f}'    
    'number is +1234.57  '
    
    # datetime时间格式输出
    >>> import datetime
    >>> number = datetime.datetime.today()
    >>> f'the time is {number:%Y-%m-%d (%a) %H:%M:%S}'
    'the time is 2021-07-14 (Sat) 20:46:02'
    

    本文作者: 王瑞
    本文链接: https://www.lyshark.com/post/533eb8c0.html
    版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

  • 相关阅读:
    聊一聊 GDB 调试程序时的几个实用命令
    【Python机器学习】零基础掌握EllipticEnvelope协方差估计
    RPA机器人的使用条件是什么,可以使用在私域运营中吗?
    vue3--响应式原理
    学习区块链经典教程:区块链技术与应用
    2022.8.7-----leetcode.636
    python2安装biopython
    踹掉后端,前端导出Excel!
    Elasticsearch语法知多少之Boolean query
    链表--环形链表--龟兔赛跑算法
  • 原文地址:https://www.cnblogs.com/LyShark/p/17616981.html
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号