(内容包括输入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型格式化输出

格式:

  1. "....{}...{}...".format(var1,var2,...) (填坑),挖了几个坑,填几个参数。
  2. "....{0}...{1}...".format(var1,var2,...) (位置标号),前面的坑按数字顺序对应后面的参数。
  3. "....{a}...{b}...".format(a=var1,b=var2,...) (关键字),后面给关键字赋值。

3. f” ”型格式化输出

格式: 直接在f”…{var1}…”的字符串的大括号中,填写变量名称即可。

几点注意:

  1. 输出多个同一类型值时,可以用加号拼接或逗号(分隔符)分隔。
  2. 分隔符号(逗号)默认输出一个空格,如果想输出别的,可以在内容后面跟,sep=” ”,引号中填你想要的分隔符。
  3. print()函数默认换行,因为默认end=”\n”,如果不想换行,可以在内容后面跟,end=” ”,引号中填结尾符。
  4. 双引号单引号都可以,但是首尾引号要对应,且中间不能出现首尾用过的引号,除非中间用转义符\ 。
  5. 使用f' '或' '.format()时,如果字符串本身就含有大括号,会被认作挖的坑,这时候,在需要加{}处,加两次即可,变成{{}},字符串就认为用户加的是单{},且不是挖坑,而是需要输出大括号{}。

注释Comment

python有两种方法进行注释,一种是在某句前加#(行注释),一种是对段落的注释,在需要注释的段前后分别加三个引号''' (块注释)。另外,讲需要备注的若干行选中后加Ctrl+/也可以进行备注多行。注释后,计算机就读不到被注释的文本了。

#this is the first way to annotation 

''' this is a way to annotate
something more than one
line.
'''

备注主要有三个作用:

  1. 对代码加以说明,增加代码可读性(注释不是描述代码,是说功能)
  2. 调试程序,被注释的程序不参与编译(raped code)
  3. 编写函数,类等的说明文档

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")

命令框截图如下:

一些说明:

  1. eval()中可以填任何简单字符串表达式,但eval只能对最外一层的引号进行转换,之内的表达式进行运算。
  2. 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。

一些说明:

  1. 根据系列解包赋值,如果要交换变量a和变量b的值,代码是 a,b=b,a
  2. 命名常常会有几个单词(如:time of date),如果变量或方法可以取timeOfDate,如果是类或函数可以取TimeOfDate。 (首字母大写的是类和方法,小写的是函数和类) 也可以用time_of_date和Time_of_date

如果您觉得Tom写得不错或者不好,欢迎批评或点赞。

 

Elements-of-Python01_Input/Output的更多相关文章

  1. Printing multipage output

    Printing known-length multipage output Using the PrintDataGrid control for multipage grids Example: ...

  2. Spark Rdd coalesce()方法和repartition()方法

    在Spark的Rdd中,Rdd是分区的. 有时候需要重新设置Rdd的分区数量,比如Rdd的分区中,Rdd分区比较多,但是每个Rdd的数据量比较小,需要设置一个比较合理的分区.或者需要把Rdd的分区数量 ...

  3. List 用法和实例(转载)

    写在粘贴复制前:英文的感觉也可以,也能看的懂,多看看英文资料没坏处的 Problem. You have questions about the List collection in the .NET ...

  4. C# 泛型List用法

    C# List Examples by Sam Allen - Updated September 6, 2009 Problem. You have questions about the List ...

  5. C# List 用法与示例

    Problem. You have questions about the List collection in the .NET Framework, which is located in the ...

  6. 4.3 Reduction代码(Heterogeneous Parallel Programming class lab)

    首先添加上Heterogeneous Parallel Programming class 中 lab: Reduction的代码: myReduction.c // MP Reduction // ...

  7. ACM——线性表操作

    线性表操作 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte总提交:2795            测试通过:589 描述 线性表是n个元素 ...

  8. RDD.scala(源码)

    ---- map. --- flatMap.fliter.distinct.repartition.coalesce.sample.randomSplit.randomSampleWithRange. ...

  9. 《Velocity 模板使用指南》中文版[转]

    转自:http://blog.csdn.net/javafound/archive/2007/05/14/1607931.aspx <Velocity 模板使用指南>中文版 源文见 htt ...

  10. Hard Process(二分)

    Hard Process Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submi ...

随机推荐

  1. Topsis优劣解距离法 mlx代码

    请参考https://blog.csdn.net/qq_36384657/article/details/98188769 mlx代码 topsis 优劣解距离法 参数说明: 分数.获奖次数.价值等 ...

  2. docker 启动mysql 挂载宿主机目录

    在使用docker run 运行镜像获取容器时,有些容器会自动产生一些数据,为了这些数据会因为container (容器)的消失而消失,保证数据的安全,比如mysql 容器在运行中产生的一些表的数据, ...

  3. spark load data from mysql

    spark load data from mysql code first 本机通过spark-shell.cmd启动一个spark进程 SparkSession spark = SparkSessi ...

  4. .net npoi读word内容+目录

    最近在做读npoi文档存入搜索引擎,实现快速查询word文档中内容并展示,效果希望带有目录导航. 网上有很多例子都是读写操作,很肤浅没有具体读到想要的东西所以自己就写了个demo,也有微软提供的off ...

  5. hibernate.cfg.xml 配置SQL server,MySQL,Oracle

    1.连接SQL server <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hiberna ...

  6. Docker容器和K8s添加Health Check

    docker容器启动后,怎么确认容器运行正常,怎么确认可以对外提供服务了,这就需要health check功能了. 之前对health check的功能不在意,因为只要镜像跑起来了就是健康的,如果有问 ...

  7. 吐槽一下Abp的用户和租户管理模块

    1. 背景 ASP.NET Core 基于声明的访问控制到底是什么鬼? 聊到基于声明的身份认证将 身份和签发机构分离,应用程序信任签发机构,故认可签发的身份信息. -- --- --- --- Cla ...

  8. Java创建二叉树、二叉树的遍历

    创建二叉树: public class Node {     // 左子节点     public Node leftNode;     // 右子节点     public Node rightNo ...

  9. [Luogu P3203] [HNOI2010]弹飞绵羊 (LCT维护链的长度)

    题面 传送门:洛谷 Solution 这题其实是有类似模型的. 我们先考虑不修改怎么写.考虑这样做:每个点向它跳到的点连一条边,最后肯定会连成一颗以n+1为根的树(我们拿n+1代表被弹出去了).题目所 ...

  10. 团灭 LeetCode 打家劫舍问题

    有读者私下问我 LeetCode 「打家劫舍」系列问题(英文版叫 House Robber)怎么做,我发现这一系列题目的点赞非常之高,是比较有代表性和技巧性的动态规划题目,今天就来聊聊这道题目. 打家 ...