1、习题 5: 更多的变量和打印

学习目标:了解用户输入方法,明白pthon2和Python3之间的用户输入的区别。了解格式化字符串(format string)的概念,学会如何创建包含变量内容的字符串。使用专门的格式和语法把变量的内容放到字符串里,然后进行格式化的打印输出。

1.1、用户输入

在Python3中通常使用的input() 函数直接和用户进行交互,用于等待用户的输入。

在Python2中通常使用raw_input() 函数来和用户进行交互,基本上raw_input() = input() (python3中),python2中的input() 函数基本上不用,因为在Python2中input() 函数会检查用户输入的是字符还是变量,举个栗子:如果之前定义了name的值,那么name为变量,则当我们输入name的时候,会返回变量name的值,如果之前没有定义name的值则会直接报错。

所以:对于用户输入,在Python2 中使用raw_input() ,在Python3中使用 input() 即可

1.2、格式化输出

python格式化输出有两种方式:百分号和format

format的功能要比百分号方式强大,其中format独有的可以自定义字符填充空白、字符串居中显示、转换二进制、整数自动分割、百分比显示 等功能是百分号方式不能相比的

习题五中的练习代码是:

  1. #! -*-coding=utf-8 -*-
  2. my_name = "Zed A. shaw"
  3. my_age = 35
  4. my_height = 74
  5. my_weight = 180
  6. my_eyes = "Blue"
  7. my_teeth = "White"
  8. my_hair = "Brown"
  9. print "Let,s talk about %s." % my_name
  10. print "He's %d inches tall." % my_height
  11. print "He's %d pounds heavy." % my_weight
  12. print "Actually that's not too heavy."
  13. print "He's got %s eyes and %s hair." % (my_eyes,my_hair)
  14. print "His teech are usually %s depending on the coffee." % my_teeth
  15. #this line is tricky ,try to get it exactly right
  16. print "If I add %d, %d, and %d I get %d." % (my_age,my_height,my_weight,my_age + my_height + my_weight)

上述代码的运行结果为:

  1. C:\Python27\python.exe D:/pythoncode/stupid_way_study/demo5/Exer5-1.py
  2. Let,s talk about Zed A. shaw.
  3. He's 74 inches tall.
  4. He's 180 pounds heavy.
  5. Actually that's not too heavy.
  6. He's got Blue eyes and Brown hair.
  7. His teech are usually White depending on the coffee.
  8. If I add 35, 74, and 180 I get 289.
  9. Process finished with exit code 0

从上面的代码可以了解到,%d 和 %s 都是占位符,顾名思义,就是提前占个位置,后面在用%后面的值来替换该占位符,将值放到正确的位置上。

注意:

  • %d: 将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
  • %s: 获取传入对象的__ str __方法的返回值,并将其格式化到指定位置

同理还有%f, %o %g 等占位符。这里就不一一赘述了。

2、加分习题:

  1. 修改所有的变量名字,把它们前面的my_去掉。确认将每一个地方的都改掉,不

    只是你使用=赋值过的地方。
  2. 试着使用更多的格式化字符。例如 %r 就是是非常有用的一个,它的含义是“不管什

    么都打印出来”。
  3. 在网上搜索所有的 Python 格式化字符。
  4. 试着使用变量将英寸和磅转换成厘米和千克。不要直接键入答案。使用 Python 的

    计算功能来完成。

3、我的答案

3.1、修改所有的变量名字,把它们前面的my_去掉

  1. #! -*-coding=utf-8 -*-
  2. name = "Zed A. shaw"
  3. age = 35
  4. height = 74
  5. weight = 180
  6. eyes = "Blue"
  7. teeth = "White"
  8. hair = "Brown"
  9. print "Let,s talk about %s." % name
  10. print "He's %d inches tall." % height
  11. print "He's %d pounds heavy." % weight
  12. print "Actually that's not too heavy."
  13. print "He's got %s eyes and %s hair." % (eyes,hair)
  14. print "His teech are usually %s depending on the coffee." % teeth
  15. #this line is tricky ,try to get it exactly right
  16. print "If I add %d, %d, and %d I get %d." % (age,height,weight,age + height + weight)
  1. C:\Python27\python.exe D:/pythoncode/stupid_way_study/demo5/Exer5-2.py
  2. Let,s talk about Zed A. shaw.
  3. He's 74 inches tall.
  4. He's 180 pounds heavy.
  5. Actually that's not too heavy.
  6. He's got Blue eyes and Brown hair.
  7. His teech are usually White depending on the coffee.
  8. If I add 35, 74, and 180 I get 289.
  9. Process finished with exit code 0

上述代码去掉前面的“my_”, 并未发现问题。

3.2、使用%r 格式化字符

举个栗子:

%s 和 %r 的用法区别:

其主要区别在于 %r 把原始的信息显示了出来,如字符串保留了引号,%r 用来做 debug处理,因为因为它会显示变量的原始数据(raw data),而其它的符号则是用来向用户显示输出的。%s 只是显示其值。

3.3、Python格式化字符

字符串格式代码如下:

3.4、试着使用变量将英寸和磅转换成厘米和千克,然后使用Python计算**

4、课后扩展

4.1、字符串拼接实现格式化输出

字符换一般用“+”加号进行字符串的拼接,一般情况下,字符串拼接情况下的格式化输出不常用

  1. #! -*-coding=utf-8 -*-
  2. name = raw_input("name:")
  3. age = raw_input("age:")
  4. job = raw_input("job:")
  5. salary = raw_input("slary:")
  6. person_infomation = '''
  7. ----------------'''+ name + '''的个人信息----------------
  8. name:'''+ name +'''
  9. age :'''+ age + '''
  10. job :'''+ job + '''
  11. salary:'''+ salary +'''
  12. '''
  13. print person_infomation

上述代码的运行结果为:

  1. C:\Python27\python.exe D:/pythoncode/stupid_way_study/demo5/Exer5-4.py
  2. name:kang #手工输入的信息
  3. age:24
  4. job:doctor
  5. slary:3000
  6. # 打印输出的信息
  7. ----------------kang的个人信息----------------
  8. name:kang
  9. age :24
  10. job :doctor
  11. salary:3000
  12. Process finished with exit code 0

上述代码就是一个字符串拼接格式化输出的实例,使用加号进行字符串的拼接,但是一般不建议这么写,因为在因为拼接的字符串写法比较差,执行速度慢一般不建议使用,同时需要开辟好几块内存,效率低下。

4.2、占位符%s实现格式化输出

如上面习题5实例代码,但是还有几个点需要注意一下:

  1. #! -*-coding=utf-8 -*-
  2. name = raw_input("name:")
  3. age = raw_input("age:")
  4. job = raw_input("job:")
  5. salary = raw_input("slary:")
  6. person_infomation = '''
  7. ---------------- %s 的个人信息----------------
  8. name:%s
  9. age :%s
  10. job :%s
  11. salary:%s
  12. ''' % (name,name,age,job,salary)
  13. print person_infomation

上述代码的运行结果为:

  1. C:\Python27\python.exe D:/pythoncode/stupid_way_study/demo5/Exer5-5.py
  2. name:kang
  3. age:34
  4. job:doctor
  5. slary:30000
  6. ---------------- kang 的个人信息----------------
  7. name:kang
  8. age :34
  9. job :doctor
  10. salary:30000
  11. Process finished with exit code 0

注意:

上面有几个占位符那么下面就需要引用几个变量,数量上要一一对应,不然程序会直接报错

%s %d %f帮助检测用户输入的数据类型是否是要求的,不是就直接报错。比如说,我们需要输入的age为整数,那么如果我们使用%s进行占位,那么我们输入的值就会自动被认为是字符型,如果我们需要输入的值为整数型那么需要用%d进行占位。

4.3、用.format实现格式化输出

相对于占位符%s实现格式化输出这中方式,format功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’。

.format的位置匹配规则:

  • 不带编号,即“{}”
  • 带数字编号,可调换顺序,即“{1}”、“{2}”
  • 带关键字,即“{a}”、“{tom}”

4.3.1 、不带编号的情况

首先看第一个,不带编号的情况,就是按照从前到后的顺序依次匹配

  1. #! -*-coding=utf-8 -*-
  2. name = raw_input("name:")
  3. age = raw_input("age:")
  4. job = raw_input("job:")
  5. salary = raw_input("slary:")
  6. person_infomation = '''
  7. ---------------- {} 的个人信息----------------
  8. name:{}
  9. age :{}
  10. job :{}
  11. salary:{}
  12. ''' .format(name,name,age,job,salary)
  13. print person_infomation
  1. C:\Python27\python.exe D:/pythoncode/stupid_way_study/demo5/Exer5-5.py
  2. name:Jack
  3. age:43
  4. job:teacher
  5. slary:20000
  6. ---------------- Jack 的个人信息----------------
  7. name:Jack
  8. age :43
  9. job :teacher
  10. salary:20000
  11. Process finished with exit code 0

上面这个代码就是运用了.format() 的不带编号匹配原则,从前到后依次填充format( ) 括号中的值。注意前后顺序很重要,不然就会乱序的。

4.3.2、带数字编号的情况

带数字的情况是.format大括号{x}中是0-n,使用{0-n}来先进行占位,然后再在下面使用.format引用上面已定义的变量(一,一定义)

4.3.3、带关键字的情况

这里的.format主要是使用多个变量进行占位{_name}然后下面再用.format将定义的变量名和上面已定义的变量进行连接(一,一对应)

  1. #! -*-coding=utf-8 -*-
  2. name = raw_input("name:")
  3. age = raw_input("age:")
  4. job = raw_input("job:")
  5. salary = raw_input("slary:")
  6. person_infomation = '''
  7. ---------------- {_name} 的个人信息----------------
  8. name:{_name}
  9. age :{_age}
  10. job :{_job}
  11. salary:{_salary}
  12. ''' .format(_name = name,
  13. _age = age,
  14. _job = job,
  15. _salary = salary)
  16. print person_infomation
  1. C:\Python27\python.exe D:/pythoncode/stupid_way_study/demo5/Exer5-6.py
  2. name:kang
  3. age:34
  4. job:teacher
  5. slary:3000
  6. ---------------- kang 的个人信息----------------
  7. name:kang
  8. age :34
  9. job :teacher
  10. salary:3000
  11. Process finished with exit code 0

5、习题总结

习题5主要是学习了和用户交互输入需要注意的地方,还学习了格式化输出的各种形式。重点是.format() 函数的使用。

笨办法学Python - 习题5: More Variables and Printing的更多相关文章

  1. 笨办法学Python - 习题1: A Good First Program

    在windows上安装完Python环境后,开始按照<笨办法学Python>书上介绍的章节进行练习. 习题 1: 第一个程序 第一天主要是介绍了Python中输出函数print的使用方法, ...

  2. 笨办法学Python - 习题4: Variables and Names

    1.习题 4: 变量(variable)和命名 学习目标:了解Python中变量的定义,学习定义简明易记的变量名 变量:变量是存储内存中的值,就是每定义一个变量就会在内存中开辟一个空间.基于变量的类型 ...

  3. 笨办法学Python - 习题11-12: Asking Questions & Prompting People

    目录 1.习题 11: 提问 2.习题 12: 提示别人 3.总结 1.习题 11: 提问 学习目标:了解人机交互场景,熟悉raw_input 的用法. 1.在 Python2.x 中 raw_inp ...

  4. 笨办法学Python - 习题8-10: Printing & Printing, Printing

    目录 1.习题 8: 打印,打印 2.习题 9: 打印,打印,打印 3.习题 10: 那是什么? 3.1.转义序列: 4.习题总结: 1.习题 8: 打印,打印 学习目标:继续学习 %r 的格式化输出 ...

  5. 笨办法学Python - 习题6-7: Strings and Text & More Printing

    目录 1.习题 6: 字符串(string) 和文本 2.加分习题: 3.我的答案 4.习题总结 5.习题 7: 更多打印 6.习题总结 1.习题 6: 字符串(string) 和文本 学习目标:了解 ...

  6. 笨办法学Python - 习题3: Numbers and Math

    目录 习题 3: 数字和数学计算 算术运算符 加分习题: 我的答案: 总结: 扩展: Python比较运算符 Python赋值运算符 Python位运算符 Python逻辑运算符 Python成员运算 ...

  7. 笨办法学python 习题14 优化过 遇到问题的请看

    print "\t what's you name?"user_name = raw_input('>') from sys import argvscript, = arg ...

  8. 笨办法学 Python (Learn Python The Hard Way)

    最近在看:笨办法学 Python (Learn Python The Hard Way) Contents: 译者前言 前言:笨办法更简单 习题 0: 准备工作 习题 1: 第一个程序 习题 2: 注 ...

  9. 笨办法学 Python (第三版)(转载)

    笨办法学 Python (第三版) 原文地址:http://blog.sina.com.cn/s/blog_72b8298001019xg8.html   摘自https://learn-python ...

随机推荐

  1. 打包dll发布到nuget服务器

    几个月前上传过一次nuget包,结果好久不用,今天想更新下,完全忘记了怎么用了,又是一顿查,所以决定记录下来,当然这可能不是一个傻瓜式的教程,但聪明的你们应该能够看明白的,因为整体操作还是很简单的 好 ...

  2. Apache AB的安装和使用(Ubuntu16.04)

    步骤很简单一共两步,安装一步,使用一步. sudo apt-get install apache2-utils ab -n 10000 -c 100 https://www.baidu.com/ 注意 ...

  3. 网页里面出现"$#2342"类似这样 应该怎么转义过来?

    Python2 from HTMLParser import HTMLParser print HTMLParser().unescape('【竞彩足球')

  4. 笔记:iOS字符串的各种用法(字符串插入、字符串覆盖、字符串截取、分割字符串)(别人的代码直接复制过来的,我脸皮有点厚)

    NSString* str=@"hello";//存在代码区,不可变 NSLog(@"%@",str); //1.[字符串插入] NSMutableString ...

  5. Kafka基础认识

    1):Apache kafka介绍及架构详解 假设一个场景: 数据源: 应用系统A 产生的用户访问数据和订单数据 10000 条一秒钟 push:推送数据 消息系统:队列 产生的数据量>数据量 ...

  6. 会话控制(session和cookie)、跨页面传值

    1.session  登录上一个页面以后,长时间没有操作,刷新页面以后需要重新登录. 特点:(1)session是存储在服务器:   (2)session每个人(登陆者)存一份: (3)session ...

  7. 【HNOI2014】道路堵塞

    题面 题解 解法一 这个思路要基于以下一个结论: 当你删掉某条边\((x,x+1)\)时,最短路路线为:\(1\to x(\leq u)\to y(>u) \to n\),并且\(x\to y\ ...

  8. SpringCloud-微服务网关ZUUL(六)

    前言:前面说过,由于微服务过多,可能某一个小业务就需要调各种微服务的接口,不可避免的就会需要负载均衡和反向代理了,以确保ui不直接与所有的微服务接口接触,所以我们需要使用一个组件来做分发,跨域等各种请 ...

  9. 2_C语言中的数据类型 (九)逻辑运算符与if语句、switch、条件运算符?、goto语句与标号

    1          条件分支语句 1.1       关系运算符 在C语言中0代表false,非0代表真 1.1.1          < 小于 1.1.2          <= 小于 ...

  10. 一目了然带你看lniux

    第一部分    熟悉Linux基本操作 一.初识Linux 1.Linux特点 ◊  开放性 ◊  多用户 ◊  多任务 ◊  良好的用户界面 ◊  设备独立性 ◊  丰富的网络功能 ◊  可靠的系统 ...