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 ...
随机推荐
- Learning Attention-based Embeddings for Relation Prediction in Knowledge Graphs
这篇论文试图将GAT应用于KG任务中,但是问题是知识图谱中实体与实体之间关系并不相同,因此结构信息不再是简单的节点与节点之间的相邻关系.这里进行了一些小的trick进行改进,即在将实体特征拼接在一起的 ...
- SaaS系统怎么做物流行业年度经营报告,MVC+js+echarts实现
前言 马上就到年底了,很多公司都要汇总这一年的经营情况,如果一个系统没有自动生成年报的功能, 需要人工手工去做年报,我相信可能是一个不小的工作量,最近我通过一个星期的时间,结合系统情况自动生成年报,全 ...
- soundPool声音池
soundPool可以同时播放多个声音,但是最好文件不要超过1M,声音只能播放几秒,适合游戏混合音效 public class MainActivity extends AppCompatActivi ...
- JUC---03Lock(一)ReentrantLock
1.什么是锁 在以前实现多线程的同步操作时,都是添加synchronized关键字或者synchronized代码块:而锁实现提供了比使用同步方法和语句可以获得的更广泛的锁操作.它们允许更灵活的结构, ...
- Spring Cloud 学习笔记 (一)-- Eureka 服务器
开局一张图,截取了本人学习资料中的一张图,很好地展示了Eureka的架构. Eureka服务器 管理服务的作用.细分为服务注册,服务发现. 所有的客户端在Eureka服务器上注册服务,再从Eureka ...
- 【论文阅读】分布一致性算法Paxos 《The Part-Time Parliament》
论文原文.翻译稿.PPt:https://1drv.ms/u/s!Ak-jGl23kTuMimOZzV-MyLQUYmsN?e=DL1xHD
- http接口和web service接口测试区别是什么?
1.web service有一套完整的协议标准,其中有soap协议,用来进行消息的传递. 2.soap请求是HTTP POST的一个专用版本,遵循一种特殊的xml消息格式 Content-type设置 ...
- 用GitHub Pages搭建博客(二)
本篇介绍基本GitHub Pages的搭建流程 GitHub账号及仓库创建 登录GitHub,录入用户名.邮箱.密码,创建成功后登录进入. 注册时,邮箱建议不使用QQ邮箱.因为一些第三方部署类网站不支 ...
- 快速傅里叶变换(FFT)学习笔记(其二)(NTT)
再探快速傅里叶变换(FFT)学习笔记(其二)(NTT) 目录 再探快速傅里叶变换(FFT)学习笔记(其二)(NTT) 写在前面 一些约定 前置知识 同余类和剩余系 欧拉定理 阶 原根 求原根 NTT ...
- Java_垃圾回收机制(未掌握)
垃圾回收机制 任何一种垃圾回收算法一般要做两件基本事情: 发现无用的对象(没有任何变量引用该对象) 回收无用对象占用的内存空间 垃圾回收相关算法: 引用计数法, 引用可达法 分代垃圾回收机制: 不同的 ...