#十一.格式化字符串:format
first_name = input('What your first name?')
last_name = input('What your last name?')
method1 = 'Hello, ' + first_name + ' ' + last_name #这个是我们之前所用到的使用 + 来拼接字符串
print(method1)
method2 = 'Hello, {} {}'.format(first_name, last_name) #它工作的方式按照指定的参数顺序,第一个是变量first_name,第二个是变量last_name
print(method2)
method3 = 'Hello, {0} {1}'.format(first_name, last_name) #如果我们要指定用第几个参数,就需要填入数字,当然可以倒着来,也可以重复使用,巨方便
print(method3) #笔者注:在任何计算机语言之中,第一项永远都是0(如果有特例来杠,那我无话可说。)
method4 = f'Hello, {first_name} {last_name}' #前面的f使用F也行哦~ 它代表format 后面的拼接方式很直接,直接在{}里面输入变量名就行
print(method4)
# 此用法(最后一个)只支持在Py3.x中使用
上面的 method 别看懵圈,他只是一个变量名,你可以随便用别的,我为了逼格高一点,就用了 方法 的英语 method 后面1234是序号,意思是第几种方法。
本节课内容就是实际操作使用 format ,代码我上一节课已经给出来了。希望大家也可以自己动手去尝试写出来并进行调试,你可能会有新的疑问[呲牙]
如果你调试了,你就会发现。以上的输出都是一样的,也就是可以用不同的方式实现字符串拼接。这就是计算机语言,条条大路通罗马。
1.数值和字符串一样可以储存到变量中去
pi = 3.14159
#细心的朋友发现,这里给pi的值没有使用 '3.14159' ,也就是没有用'',这是因为在Py之中,数值是不需要''的,它需要区分数值和字符串
print(pi)
2.我们再进一步使用运算试试
num1 = 6
num2 = 2
print(num1 + num2) # 它代表 num1 + num2 , 也就是 6 + 2 打印的结果可想而知:8
print(num1 ** num2) # 它的意思就是6的2次方,打印出来的结果也就是36
加法要使用 + 运算符
减法要使用 - 运算符
乘法要使用 * 运算符
除法要使用 / 运算符
指数运算要使用 ** 运算符
3.我们再试试和字符串拼接
num3 = 28
print('一般情况下二月有 ' + num3 + ' 天') 不知道有没有同学提前试过这种拼接,这样使用会出现报错的情况。
以上行为会出现报错原因是因为 不支持 int和string 的 +操作
也就是用 + 有歧义:Py不知道你用 + 到底是数值相加还是拼接字符串
于是我们就开始进入本节的正题:数值类型的转换
num3 = 28
print('一般情况下二月有 ' + str(num3) + ' 天')
我们在这里使用了 str() 将 num3 里的数值转换为字符串,Py就知道了这是一个字符串。所以要是将数值和字符串混用时,就必须转换数值为字符串。
有小伙伴在这里又有了疑问,为什么我不直接用字符串呢?还转换,麻烦的一批。下面的代码可能对你的问题有更好的解读:
num4 = '5'
num5 = '6'
#请注意,我这里给 数字 加了 '' ,它现在已经不是数值了,它是字符串!!!
print(num4 + num5)
#我们在这里使用了“ + 号运算符 ”,然而输出的结果却是:56(这里含义是5和6放在一起) 不信可以试试,信也去试试...
这就是数据类型转换的重要性,我们接下来还有很多的转换方式:int()、float()
num6 = input('请输入第一个数字: ')
num7 = input('请输入第二个数字: ')
print(int(num6) + int(num7))
print(float(num6) + float(num7))
调试输出的是什么?快去试试吧。
小结:
如果没有类型转换,两种及两种以上的变量值不能够进行拼接或者是进行运算。
str()会转换为字符串,用于和字符串搭配使用
int()会转换为数值,但是转换的值仅仅为整数,如果输入的是数字并带有小数,那么将会报错。
float()会转换为可以带有小数的数值 [官方称为:浮点数值]
我们在使用数字时候一定要确保类型正确,我想你应该清楚什么时候用数值(计算或者。。。),什么时候用字符串。
本节课所涉及的代码上节之中都已经给出,但是建议同学们自己也去试试。
from datetime import datetime
#从 datetime库 中导入 datetime函数 ,这个库后面将会介绍
today = datetime.now()
#然后我们获取 当前时间:datetime.now() [调用 datetime 中的 now函数] 赋值给 today
print('现在时间: ' + str(today))
#然后我们使用 str() 将日期转换为字符串
datetime库 中有很多函数可以调用 上面我们使用的是datetime.now()
我们试试 datetime库 中的 timedelta函数 :
from datetime import timedelta
#记得还要导入 timedelta函数 ,当然是从 datetime库 中导入。
因为我们之前已经导入过 datetime函数 如果我们没有导入,我们可以一次性导入多个,方法是:
from datetime import datetime,timedelta
# [没错,英文格式的逗号就是隔开的方法]
↑上面这条代码的意思是 : 从 datetime(库) 中导入 datetime(函数),timedelta(函数)
one_day = timedelta(days=1) #时间差:我设置的是一天,如果是3天,你可以 timedelta(days=3) , 还是那样,one_day 仅仅是一个变量名,我随便起的名字。
yesterday = today - one_day #昨天[新的变量:昨天] = 今天[我本节刚开始通过datetime.now()获取的] - one_day[在上条代码定义了它是1天]
print('Yesterday was: ' + str(yesterday))
代码上面已经给出,建议自己手打哦~
如果运行时候报错看看是不是没有对日期进行类型转换!
同学们可以试试 'Tomorrow was : ’ + str(Tomorrow)) 或者 几天前还有几天后
1.我们还能试试只显示日期之中的某一部分:我在上面已经获取过今天时间,就不再次获取了
from datetime import datetime
today = datetime.now()
print('日: ' + str(today.day))
print('月: ' + str(today.month))
print('年: ' + str(today.day))
print('时: ' + str(today.hour))
print('分: ' + str(today.minute))
print('秒: ' + str(today.second)) #second也有秒的意思,不了解的同学们可以取查查看
以上代码输出是什么样子呢↓
2.我们接下来尝试计算用户输入的 下一个生日 [时间] 距离 今天 还有多少天:还是就不再继续获取今天时间了
呃呃,,,等更新,你们自己先去试试,我24小时内必更新