Elements-of-Python01_Input/Output
(内容包括输入input,输出print,注释comment,预测类型转换eval,命名与赋值Name & Bestow)
输入Input 和 输出Print
Python中利用input() 和 print() 可以进行在命令行内的输入和输出。
输入input
【从标准输入读入一行文本】input()函数可以从命令框中读到外部输入,以字符串的形式储存。 比如我们想用一个12,需要用a=int(input(">>>")),在命令框中输入12。如果只采用a=input(">>>"),则a="12"字符串类型。(可以用一个内置函数type(a)来查看对象a的类型)
经常用类型转换函数把input()得到的字符串转换为期待的类型,常用到的转换函数包括:

a = int(input(">>>"))
另外,还有一种读取效率比input()更高的方式,在sys模块中,可以写为sys.stdin.readline(),这种方式不会忽略用户所输入的换行符,因此,实际使用的时候,常常使用下面的语句来去除键盘输入首尾的换行符:
import sys
a = sys.stdin.readline().strip() #可以理解为sys模块中stdin类中的readline()方法,得到的数据用strip()函数来处理,去掉换行符
输出print
【在命令框中打印一些内容】用print()函数可以把内容进行输出。
print(20201028,"Hello Python!\t"+"www","python","org",sep=".")
#可以打印任意格式的变量,变量间可以用逗号或加号间隔,
#逗号和逗号间可以加间隔符,使用间隔符参数sep=' '
name,age="Tom",25
print(f"The author's name is {name},and the age is {age}. ")
#使用f" " 可以在字符串中加{},括号中加带有变量的算式即可
print("Futhermore, {0} likes to programme, and {0} wants to succeed when {1}. ".format(name,age+1),end="")
#使用"".format() 可以在字符串中加{},括号中可以加序号、名字或什么都不加,
#后面加序号数对应的算式、名字对应的算式,或按顺序写括号中的算式
print("Cheer up,%s!Grit!"%(name))
#使用占位符进行打印
输出结果如截图所示:
几点说明:
| 格式化输出方法详解 | ||
| [:[[fill] align] [sign] [width] [.precision] [type]] | ||
| fill | 空白处字符 | 空白处你希望填的字符 |
| align | 对齐方式 | < 左对齐 > 右对齐 ^ 居中对齐 = 右对齐,正负号居左 |
| sign | 符号打印方式 | 加号 正负号都打印 减号 只打印负号,正号不打 空格 正数空格,负数负号 井号 其他进制打印进制标识 |
| width | 总宽度 | 一共需要占几个字符 |
| .precision | 小数部分精确度 | 小数点后保留多少位 |
| type | 类型 | d 整数 f 小数 e 科学计数 % 百分数 s 字符串(b二进制,o八进制,x十六进制,c转Unicode) |
首先说说填充和对齐:在输出的时候,有时需要固定的格式,如{a:&=+10.2f},表示打印a,用&符号填充空白,符号居左数字居右,正负号都显示,共占10位,小数后精确度是2位,a作为float类型输出。
另外,小数点也算格式化输出中的一位。
1. %型格式化输出
格式是 "....%s...%s..."%(var1,var2,....) 。用%s对字符串中需要填充的地方使用占位符,再用对应个数的变量将占位符以字符串形式填充,变量var1可以是任意类型。也就是说,无论什么类型,你想让它输出为字符串,你就用%s。下表是占位符的含义:
| 占位符和变量类型的对应关系 | ||
| 占位符 | 描述 | |
| %c | ASCII码 | |
| %s | 字符串 | |
| %d | 十进制整形 | |
| %f | 十进制小数 | |
| %u | 无符号十进制整形 | |
| %o | 无符号八进制整数 | |
| %x & %X | 无符号十六进制整形 | |
| %e & %E | 科学计数法 | |
| %p | 指针型 | |
| %n | 储存输出字符的数量放进参数列表的下一变量中 | |
2. format型格式化输出
格式:
- "....{}...{}...".format(var1,var2,...) (填坑),挖了几个坑,填几个参数。
- "....{0}...{1}...".format(var1,var2,...) (位置标号),前面的坑按数字顺序对应后面的参数。
- "....{a}...{b}...".format(a=var1,b=var2,...) (关键字),后面给关键字赋值。
3. f” ”型格式化输出
格式: 直接在f”…{var1}…”的字符串的大括号中,填写变量名称即可。
几点注意:
- 输出多个同一类型值时,可以用加号拼接或逗号(分隔符)分隔。
- 分隔符号(逗号)默认输出一个空格,如果想输出别的,可以在内容后面跟,sep=” ”,引号中填你想要的分隔符。
- print()函数默认换行,因为默认end=”\n”,如果不想换行,可以在内容后面跟,end=” ”,引号中填结尾符。
- 双引号单引号都可以,但是首尾引号要对应,且中间不能出现首尾用过的引号,除非中间用转义符\ 。
- 使用f' '或' '.format()时,如果字符串本身就含有大括号,会被认作挖的坑,这时候,在需要加{}处,加两次即可,变成{{}},字符串就认为用户加的是单{},且不是挖坑,而是需要输出大括号{}。
注释Comment
python有两种方法进行注释,一种是在某句前加#(行注释),一种是对段落的注释,在需要注释的段前后分别加三个引号''' (块注释)。另外,讲需要备注的若干行选中后加Ctrl+/也可以进行备注多行。注释后,计算机就读不到被注释的文本了。
#this is the first way to annotation
''' this is a way to annotate
something more than one
line.
'''
备注主要有三个作用:
- 对代码加以说明,增加代码可读性(注释不是描述代码,是说功能)
- 调试程序,被注释的程序不参与编译(raped code)
- 编写函数,类等的说明文档
eval函数
【可以理解为把字符串中的内容自动转为它应该是的数据】利用eval()函数可以轻松的进行计算字符串表达式,类型变换等功能。
import math
print(eval("3+4")) #功能类似字符串表达式计算器
a = eval("[2,4,'Hello',[1,2,3,4],math.pi,'3+4']") #功能类似类型变换
print(type(a),a,sep="\n")
b = eval(input(">>>"))
print(type(b),b,sep="\n")
命令框截图如下:

一些说明:
- eval()中可以填任何简单字符串表达式,但eval只能对最外一层的引号进行转换,之内的表达式进行运算。
- eval中的复杂功能字符串不一定能100%保证自动转换或运算正确。
命名和赋值Name & Bestow
命名应做到:字母、数字、下划线的组合,字母开头,不使用关键字,对大小写敏感,望文生义。
几种命名规范:
①Unix_C: 如your_age
②匈牙利命名法:属性(成员范围)_类型+对象描述
③驼峰命名法: 如getElementBody;
赋值号(等于号)左边是被赋值量,右边是值。
a = 10
a=b=c=10 #链式赋值
a , b , c =1 , 1.5 , ”Tom” #系列解包赋值
另外,在Pyhton中,不仅可以对属性进行命名,如a=b对于方法也可以进行命名,如c=math.sqrt,这样,c就和math.sqrt等效,print(c(4))会输出2.0。
一些说明:
- 根据系列解包赋值,如果要交换变量a和变量b的值,代码是 a,b=b,a
- 命名常常会有几个单词(如:time of date),如果变量或方法可以取timeOfDate,如果是类或函数可以取TimeOfDate。 (首字母大写的是类和方法,小写的是函数和类) 也可以用time_of_date和Time_of_date
如果您觉得Tom写得不错或者不好,欢迎批评或点赞。
Elements-of-Python01_Input/Output的更多相关文章
- Printing multipage output
Printing known-length multipage output Using the PrintDataGrid control for multipage grids Example: ...
- Spark Rdd coalesce()方法和repartition()方法
在Spark的Rdd中,Rdd是分区的. 有时候需要重新设置Rdd的分区数量,比如Rdd的分区中,Rdd分区比较多,但是每个Rdd的数据量比较小,需要设置一个比较合理的分区.或者需要把Rdd的分区数量 ...
- List 用法和实例(转载)
写在粘贴复制前:英文的感觉也可以,也能看的懂,多看看英文资料没坏处的 Problem. You have questions about the List collection in the .NET ...
- C# 泛型List用法
C# List Examples by Sam Allen - Updated September 6, 2009 Problem. You have questions about the List ...
- C# List 用法与示例
Problem. You have questions about the List collection in the .NET Framework, which is located in the ...
- 4.3 Reduction代码(Heterogeneous Parallel Programming class lab)
首先添加上Heterogeneous Parallel Programming class 中 lab: Reduction的代码: myReduction.c // MP Reduction // ...
- ACM——线性表操作
线性表操作 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交:2795 测试通过:589 描述 线性表是n个元素 ...
- RDD.scala(源码)
---- map. --- flatMap.fliter.distinct.repartition.coalesce.sample.randomSplit.randomSampleWithRange. ...
- 《Velocity 模板使用指南》中文版[转]
转自:http://blog.csdn.net/javafound/archive/2007/05/14/1607931.aspx <Velocity 模板使用指南>中文版 源文见 htt ...
- Hard Process(二分)
Hard Process Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submi ...
随机推荐
- Topsis优劣解距离法 mlx代码
请参考https://blog.csdn.net/qq_36384657/article/details/98188769 mlx代码 topsis 优劣解距离法 参数说明: 分数.获奖次数.价值等 ...
- docker 启动mysql 挂载宿主机目录
在使用docker run 运行镜像获取容器时,有些容器会自动产生一些数据,为了这些数据会因为container (容器)的消失而消失,保证数据的安全,比如mysql 容器在运行中产生的一些表的数据, ...
- spark load data from mysql
spark load data from mysql code first 本机通过spark-shell.cmd启动一个spark进程 SparkSession spark = SparkSessi ...
- .net npoi读word内容+目录
最近在做读npoi文档存入搜索引擎,实现快速查询word文档中内容并展示,效果希望带有目录导航. 网上有很多例子都是读写操作,很肤浅没有具体读到想要的东西所以自己就写了个demo,也有微软提供的off ...
- hibernate.cfg.xml 配置SQL server,MySQL,Oracle
1.连接SQL server <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hiberna ...
- Docker容器和K8s添加Health Check
docker容器启动后,怎么确认容器运行正常,怎么确认可以对外提供服务了,这就需要health check功能了. 之前对health check的功能不在意,因为只要镜像跑起来了就是健康的,如果有问 ...
- 吐槽一下Abp的用户和租户管理模块
1. 背景 ASP.NET Core 基于声明的访问控制到底是什么鬼? 聊到基于声明的身份认证将 身份和签发机构分离,应用程序信任签发机构,故认可签发的身份信息. -- --- --- --- Cla ...
- Java创建二叉树、二叉树的遍历
创建二叉树: public class Node { // 左子节点 public Node leftNode; // 右子节点 public Node rightNo ...
- [Luogu P3203] [HNOI2010]弹飞绵羊 (LCT维护链的长度)
题面 传送门:洛谷 Solution 这题其实是有类似模型的. 我们先考虑不修改怎么写.考虑这样做:每个点向它跳到的点连一条边,最后肯定会连成一颗以n+1为根的树(我们拿n+1代表被弹出去了).题目所 ...
- 团灭 LeetCode 打家劫舍问题
有读者私下问我 LeetCode 「打家劫舍」系列问题(英文版叫 House Robber)怎么做,我发现这一系列题目的点赞非常之高,是比较有代表性和技巧性的动态规划题目,今天就来聊聊这道题目. 打家 ...