python基础-02-while格式化逻辑运算
python其他知识目录
1、循环打印“我是小马过河”
while True:
print('我是小马过河')
#4、用while从一打印到10
#5、请通过循环,1 2 3 4 5 6 8 9 10
#备注:连续的对其中一个不做相同的操作(连续数字指
定其中一个不打印)
#自我注解:无限循环,死循环用while。
小结:
死循环无限循环while ;有限循环for;满足条件停止循环if满足就break;
需要输入input;需要序列range()或定义自增循环;循环中某个不操作if满足条件continue,pass;for 用range能省去while的循环计数
判断变量是不是某种类型:
if type(变量) == 数据类型:(str ,list,tuple,dict)
print(数据类型)
#4、用while从一打印到10
#注意Python似乎不能用i++,可以i+=1
count=0 while count<10: count=count+1 print(count) #从1到10,(0,10)先自增 count=0 while count<=9: count = count + 1 print(count) #从1到10,(0,9]先自增 count=0 while count<10: count +=1 print(count) #从1到10,(0,10)先自增,自增可以count=count+1;count+=1;如果自增为一个变量,那么count+=变量 count=1 while count<11: print(count) count = count + 1 #[1,11),先其它操作后自增 count=1 while count<=10: print(count) count = count + 1 #[1,10]先其它操作后自增
#给自己的建议:程序需要从几到几,按照第一种方式,先自增后其它,实现循环次数后再做操作,自增放在前面防止思路弄乱,方便自己阅读。
#需要添加倒着循环的
#5、请通过循环,1 2 3 4 5 6 8 9 10
#备注:连续的对其中一个不做相同的操作(连续数字指 定其中一个不打印) #自我注解 连续数字一个不打印相当于不等于它就打印,或者等于它就跳过本次循环后面的操作 count=0 while count<10: count=count+1 if count != 7: print(count) 先打印出1-10,然后去掉7 count=0 while count<10: count=count+1 if count == 7 : continue print(count) print(""" 1 3 4 5 6 8 9 10""") count=0 while count<10: count=count+1 if count == 7 : pass else: print(count) 6 8-10
#6、while else 结构
count=0 while count<10: count = count + 1 print(count) else: print("不再满足while的条件时,即whil返回值为False时执行这里,break等跳出循环的操作是否 执行else后面语句,看返回值")
#自我注解:循环(正常)结束才执行的代码,非正常结束不执行代码
#添加:上面为循环做完了做什么操作,添加一个循环做完了然后做满足某种条件的才做某种操作,否则是另一种操作。(使用flag)
#7、格式化输出
1、s% 指定占位符宽度
name=["mcw","小马过河","魔降风云变"] print("%s和%s"%(name[0],name[1])) --------------结果: mcw和小马过河
print("name:%s"%("mcwhr")) #指定占位符宽度
print("name:%3s"%("mcwhr"))
print("name:%6s"%("mcwhr"))
print("name:%8s"%("mcwhr"))
print("name:%12s"%("mcwhr"))
print("name:%8.2f"%(3.1415926))
--------------结果:
print ("Name:%s Age:%d Height:%.2f"%("mcw",18,1.64)) #加-加数字,可实现几列对齐排序
print ("Name:%-s Age:%-d Height:%-.2f"%("mcw",18,1.64))
print ("Name:%10s Age:%8d Height:%8.2f"%("mcw",18,1.64))
print ("Name:%-10s Age:%-8d Height:%-8.2f"%("mcw",18,1.64))
print ("Name:%-12s Age:%-12d Height:%-12.2f"%("mcw",18,1.64))
-------------------------结果:
问题一:%s格式化输出缺少传参出现的错误 name=["mcw","小马过河","魔降风云变"] print("%s和%s"%(name[0])) --------结果: print("%s和%s"%(name[0])) TypeError: not enough arguments for format string (格式字符串的参数不足) 问题二:%s传参数量多于接收的数量报错 name=["mcw","小马过河","魔降风云变"] print("%s和%s"%(name[0],name[1],name[2])) ----------------结果: print("%s和%s"%(name[0],name[1],name[2])) TypeError: not all arguments converted during string formatting (并非所有参数都在字符串格式化过程中转换)
问题三:缺少一个右半边括号报错:
name=["mcw","小马过河","魔降风云变"]
print("%s和%s"%(name[0],name[1])
-------------结果:
SyntaxError: unexpected EOF while parsing (分析时出现意外的EOF)
2、%d #取整数
print("You have %d books"%(23.4)) ------------结果: You have 23 books %d可以取整,而%s却不能取整 print("You have %s books"%(23.4)) --------------结果: You have 23.4 books
3、%% #打印一个%号,要用另一个%转义,不要被%s的%所影响。
print("我有%s%%的把握"%(80)) -----------------结果: 我有80%的把握
4、%f #打印浮点数,以及指定打印小数位位数
print("我支付宝只有%f的余额"%(250.25)) --------------结果: 我支付宝只有250.250000的余额
print("我支付宝只有%.3f的余额"%(250.25))
-------------结果:
我支付宝只有250.250的余额
#%f可以打印出后面的浮点数,似乎是6位小数。而%s写的啥就输出的啥
print("我支付宝只有%s的余额"%(250.25))
--------------结果: 我支付宝只有250.25的余额
参考:https://www.cnblogs.com/claidx/p/7253288.html
字符串格式化存在的意义
name = input('姓名:') do = input('在干什么:') template = "%s在教室,%s。" %(name,do,) print(template)
直接做占位符
template = "我是%s,年龄%s, 职业%s。" %("mcw",73,'讲鸡汤',)
print(template)
template = "我是%s,年龄%d, 职业%s。" %("mcw",73,'讲鸡汤',)
print(template)
name = 'mcw'
template = "%s现在手机的电量是100%%" %(name,)
print(template)
占位符%s既可以表示字符串str,还可以表示整数int,浮点数float;
占位符%d既可以表示整数int,还可以表示浮点数float(去除整数部分)
占位符%f既可以表示浮点数float,还可以表示整数int(默认保留6位小数)
注意:若想自主保留n位小数,可将其表示位%.nf
自我注解:格式化输出"%s"%(传的值),打印%就要再加一个%
问题:如果后面%s和后面的参数个数不一致会是什么情况?
pycharm改解释器版本
#8、打印1-100的奇数
count=0
while count<100:
count=count+1
if count%2 != 0:
print(count)
#自我注解:除以2取余为0的是偶数。条件可得偶数,需要奇数,条件取反就得奇数。
#9、求和1-100
count=0 sum=0 while count<100: count=count+1 sum=sum+count print(sum)
#注解:count自增实现循环,sum将每次循环的count加到sum里,实现count1-100的循环求和
#10、计算1-10中,除1外,偶数减奇数
zongshu=0 num=1 while num<11: if num==1: zongshu=zongshu+num elif num !=1: b=num%2 if b==False: zongshu=zongshu+num elif b==True: zongshu=zongshu-num num=num+1 print(zongshu)
#11、求方,
#12、求开方
#13、逻辑运算 与或非
#14、数据类型转换
bool() 数字和字符串转布尔类型,0和空字符串是False,空格是True.布尔值转换数字为0和1,转换为字
符串为字符串。 int() 字符串转数字,数字转字符串 str()
#需要增加数据类型转换
#15、value=1 or 9 (and,or,not)
#注意:似乎由此判断变量的值,然后对值进
or
"""
对于 or,如果有遇到 value= 1 or 9 第一个值如果是转换成布尔值如果是真,则value=第一值。 第一个值如果是转换成布尔值如果是假,则value=第二值。 如果有多个or条件,则从左到右依次进行上述流程。 示例: v1 = 0 or 1 v2 = 8 or 10 v3 = 0 or 9 or 8 """
#注解:or遇到假,往后走,遇到第一个真,就返回这个值。遇到全为假,返回最后那个值 $找真找到就停
v1= 0 or 0 or False v2=0 or False or 0 print(v1,v2)
and
""" 对于and,如果遇到 value= 1 and 9 这种情况 如果第一个值转换成布尔值是True,则value=第二个值。 如果第一个值转换成布尔值是False,则value=第一个值。 如果有多个and条件,则从左到右依次进行上述流程。
#注解:and遇到假就停,返回假的值。没有假,返回最后一个值 $找假,找到就停
示例:
v1 = 1 and 9 v2 = 1 and 0 v3 = 0 and 7 v4 = 0 and "" v5 = 1 and 0 and 9 j_str = "v1=%s v2=%s v3=%s v4=%s v5=%s" %(v1,v2,v3,v4,v5) print(j_str) #v1=9 v2=0 v3=0 v4=0 v5=0
行判断做对应的操作 第一个值转换布尔值如果是真,则value=第一个值 第一个值转换布尔值如果是假,则value=第二个值 如果有多个or条件,则从左到右依次
从左到右进行判断,遇到真即停止继续判断
and 遇到0就0,遇到空就空,都么遇到就是最后那个,同时遇到谁在前就是谁?
unicode现在基本ecs4,小表情ecs4,ecs2不包括 gbk gb2312,其中一个是另一个的升级,多一点。二者用两个字节存储汉字。 很多开源组件是国外的,用的是utf-8,建议用utf-8的编码