2018-08-23 Day4

01.字符串

1.字符串的格式化

带格式符的字符串%(格式符对应的值)
说明:%是固定的格式;()同为固定格式。
带格式符的字符串中有几个格式符,那么后面的括号中就必须有几个和它一一对应的值。
%s ---->字符串
%d ---->整数
%f ---->浮点数 %f 默认6位 %.nf --->保留小数点后n位小数
%c ---->字符 可以将数字转换成字符拼接到字符串中
%x和%X ---->转换成十六进制 %x--->3e8 %X--->3E8

first_name='F'
last_name='tr'
age=18
name=first_name+last_name
print(name)  #Ftr

# hello,xxx!
newstr='hello,%s%s!今年%d岁' %(first_name,last_name,age)
print(newstr) #hello,Ftr!今年18岁

# 金额是:xx.xx元
money=100
print('金额是:%.2f元'%(money))  #金额是:100.00元
"""
money=100
newstr='金额是:%.2f元'%(money)
print(newstr) 
"""

2.%c的用法

a.第一种

unit='$'
newstr='金额是:%.2f%c'%(money,unit)
print(newstr)金额是:100.00$

b.第二种

char_code=97
newstr='%d对应的字符是%c'%(char_code,char_code)
print(newstr) #97对应的字符是a

3.%x和%X

number=1000
newstr='%d的十六进制是:0x%x'%(number,number)
print(newstr) 1000的十六进制是:0x3e8
newstr='%d的十六进制是:0x%X'%(number,number)
print(newstr) 1000的十六进制是:0x3E8
'''
练习:使用变量保存学生的名字,年龄和成绩
xxx今年xx岁,他的语文成绩是xxx.
成绩保留一位小数
'''
student_name='Ftr'
age=20
score=99
print('%s今年%d岁,他的语文成绩是:%.1f分'%(name,age,score))
#Ftr今年20岁,他的语文成绩是:99.0分

02.数据类型装换

1.数据类型的自动转换

a=10  #整型(int)
b=12.5 #浮点型(float)
result=a+b #会自动将整型a,转换成浮点型,然后在计算 
print(result,type(result))  #float型
result2=a+True  #自动将布尔True,转换成整型1
print(result2,type(result2))  #int型

2.强制转换

基本语法:类型名(需要转换的数据)
a.将其他数据转换成int类型

"""
浮点型、布尔和部分字符串可以转换
"""
print(int(12.55))  #float -> int:去掉小数点和小数点后面的数
print(int(True),int(False))  #bool->int:True为1,False为0
# 去掉字符串引号后,字符串的内容本身就是一个整数的时候,才能被转换成整型
print(int('-123'))  #-123
# print(int('-123.5'))
 #ValueError: invalid literal for int() with base 10:

b.将其他的数据类型转换成float类型

"""
整数,布尔和部分字符串可以转换
""" 
print(float(100)) #int ->float:在整数后加.0
print(float(True),float(False)) #bool ->float:True1.0 False=0.0
#去掉引号后,字符串的内容本身就是一个整数或者浮点数时,才能转换为浮点型
print(float('123.40')) #123.4
print(float('123')) #123.0

c.将其他数据类型转换成bool

"""
所有的数据类型的数据都可以转换成bool
数字中:除了0是False,其他的都是True
字符串中:除了空串为False,其他的都是True

总结:所有为空、为0的值全部是False,否则为True
"""
print(bool(0.000000000))
print(bool(''))
print(bool([]))
print(bool(None))

d.其他类型转换成字符串

"""
所有的数据都可以转换成字符串,转换的时候就是在数据的外面加引号
"""
print(str(100),str(18.9),str(True),str([1,2,3]))
# '100' '18.9' 'True' '[1, 2, 3]'


03. if语句

1.python中的分之结构只有一种:if分之结构

1. if语句
语法:
if 条件语句:
   执行语句块
说明:
 a.if: python中的关键字,'如果'的意思,用来做判断
 b.条件语句:最终的结果会被转换成布尔值
 c.冒号:冒号是固定写法,必须写!
 d.执行语句块:这儿可以是多行语句,但是每行语句必须和前面的if保持同一缩进(tab)

if语句执行过程:先判断条件语句的结果是否为True,如果为True就执行冒号后面的执行语句块。否则直接执行if模块后的其他语句。

练习:用一个变量保存一个学生的成绩,要求当学生成绩大于90的时候,打印优秀,不管成绩是多少,把成绩打印

score=89
if score>90:
    print('优秀')
print("成绩为:%d"%(score)) #成绩为:89

2. if-else
语法:
if 条件语句:
    执行语句块1
else:
    执行语句块2
其他语句

说明:
else:关键字(else后边的冒号不能省)

执行过程:a.先判断条件语句的结果是否为True,如果为True就执行语句块1,执行完语句块1后再执行其他语句;如果为False就执行语句块2,执行完语句块2后在执行其他语句。
练习:要求年龄大于等于18就答应成年,否则打印未成年。

age=10
if age>=18:
    print('成年')
else:
    print('未成年')
# 未成年

3.if-elif-(else)
语法:
if 条件语句1:
语句块1

elif 条件语句2:
语句块2

elif 条件语句3:
语句块3

else:
语句块n

其他语句

练习: 要求成绩大于90分打印优秀,80-90打印良好,60-79及格,60以下不及格

score=99

if score>90:
    print('优秀')

elif score>=80:
    print('良好')

elif score>=60:
    print('及格')

else:
    print('不及格')

4.if语句的嵌套
    每个if分之中都可以嵌套其他的if语句。

if 条件1:
    执行语句1
if 条件2:
    执行语句2
else:
    执行语句3
else:
    执行语句4

练习:成绩和年龄:如果成绩大于等于90并且年龄是18以上就获取奖金100万,年龄小于18获取奖金200万。成绩小于90,没奖金。

score=99
age=20
if score>=90:
    if age>=18:
        print('获得奖金100万')#获得奖金100万
    else:
        print('获得奖金200万')
else:
    print('没奖金')

if score>=90 and age>=18:
    print('获得奖金100万')#获得奖金100万
else:
    print('无奖金')

补充:
import是python中导入模块或者模块中的内容的关键字
random是python内置的产生随机数的模块

import random
number = random.randint(0,100) 
#产生一个10~20的随机整数,并且存到number中
print(number)

练习:产生一个随机数,判断随机数是否是偶数,是就打印偶数,不是就打印奇数。如果能够被4整除,在打印能被4整除的数。

import random
number = random.randint(0,100) 
#产生一个10~20的随机整数,并且存到number中
print(number)
if number%2==0:
    print('%d为偶数'%(number))
    if number%4==0:
        print('%d能被4整除'%(number))
    else:
        print('%d不能被4整除'%(number))
else:
    print('%d为奇数'%(number))


04.条件语句的简写

1.判断一个数是否是偶数的两种写法

number=10

# 初学者
if number%2==0:
    print('偶数')

# 推荐
if not number %2:
    print('偶数')
if True:
    print('偶数')

if number %2:
    print('奇数')
else:
    print('偶数')

# 判断一个字符串是否为空串
# 初学者
str1 = 'abc'

if str1=='':
    print('空串')
else:
    print('不是空串')

# 推荐
if str1:
    print('不是空串')
else:
    print('是空串')

if not str1:
    print('是空串')
else:
    print('不是空串')


05.循环

在完成某个功能的时候,如果需要重复某个操作,就可以使用循环。python中循环结构有两种:for循环和while循环

1.for循环

1.for循环的结构:
    for 变量名 in 序列:
         循环体

说明:
a.for:关键字
b.变量名:和声明变量时的变量名的要求一样
c.in: 关键字
d.序列:容器(数据本身是由多个数据组成),
例如:字符串、列表、字典、元祖、集合、range、生成式和生成器
e.循环体:需要重复执行的代码

执行过程:
让变量从序列中取数据,一个一个取,取完为止。
每取一个数据,执行一次循环体

for x in 'abc123':
    print(x)
"""
x = a
a
x = b
b
x = c
c
x = 1
1
x = 2
2
x = 3
3
"""

知识点补充:
1.xrange是python2中函数,python3中用range来替代。
2.range函数是python中内置函数,作用是产生指定范围中的数字。

"""
range(N):产生0~N-1的所有整数
range(N,M):产生N~M-1的所有整数
range(N,M,step):产生从N开始,每step产生一个整数,到M之前。
"""
print('============')
for x in range(10):
    print(x) #0 1 2 3 4 5 6 7 8 9

print('============')
for x in range(10,21):
    print(x) #10 11 12 13 14 15 16 17 18 19 20

print('============')
for x in range(1,11,2):
    print(x) #1 3 5 7 9

练习 计算1+2+3+4+5+....+100

"""
sum1=0
x=1,2,3,4,5......99,100
第一次: x=1 sum1+=1 sum1=sum1+1=0+1
第二次: x=2 sum1+=2 sum1=sum1+2=0+1+2
....
第九十九次: x=99 sum1+=99 sum1=sum1+99=0+1+....+99
第一百次: x=100 sum1+=100 sum1=sum1+100=0+1+....+99+100
"""
print('============')
c=0
for x in range(1,101):
    c+=x
print(c)

练习:统计1~1000中能够被3整除的个数

c=0
for x in range(1,1001):
    if x%3==0:
        # print('%d可以被3整除'%(x))
        c+=1
print('1~1000中能被3整除的数有:%d个'%(c))

注意:for循环中用来获取序列值的变量,再循环体不是一定要使用。如果不用,变量名可以声明为_


练习:打印50行'****' 控制次数

for _ in range(50):
    print('****')

3. while语句

1.while循环
  1.结构:
while 条件语句:
    循环体

  2.说明:
while:关键字
条件语句:结果是True或者False
循环体:要重复执行的代码

  3.执行过程:
     判断条件语句的结果是否为Ture,如果为True就执行循环体,执行完循环体在判断条件语句是否为True,如果为True就再执行循环体....直到条件语句的结果为False为止

练习:用while循环计算1+2+3+4+5+....+100值

cont=0
sum=1
while sum<=100:
    cont+=sum
print(sum)

练习: x=? sum1=?

x=1
sum1=0
while x<=5:
    x+=1
    sum1+=x
print(x,sum1) # x=6  sum1=20

4.for循环和while循环的比较:

for循环的循环次数是有限的,并且是固定的(确定);while循环的循环次数不确定
for循环:1.遍历序列中的值 2.循环次数确定
while循环:1.死循环 2.循环次数不确定

练习:找大于10000的数中,第一个能被23整除的数

x=10001
while x%23!=0:
     x+=1
print('%d是大于10000数中第一个能被23整除的数'%(x))
#10005

06.作业

1.基础

读程序,总结程序的功能:
1.numbers=1
  for i in range(0,20):
    numbers*=2
  print(numbers)

答:
    for i in range(0,20):控制循环次数为20次(0~19)
    numbers*=2---->numbers=nember*2
1)功能:求2的20次方
2)结果为:1048576

numbers=1  
for i in range(0,20):  
    numbers*=2  
print(numbers)  
#1048576

2.summation=0
num=1
while num<=100:
if (num%3==0 or num%7==0) and num%21!=0:
summation += 1
num+=1
print(summation)

答:
    if (num%3==0 or num%7==0) and num%21!=0:
    判断num值能否被3或者7整除,并且num值不能被21整除。
1)功能:寻找100以内(包含100)能被3或者7整除的数,并且值不能被21整除。
2)结果为:39

summation=0
num=1
while num<=100:
    if (num%3==0 or num%7==0) and num%21!=0:
        summation += 1
    num+=1
print(summation)
#39

3.编程实现(for和while各写一遍):
1. 求1到100之间所有数的和、平均值
    结果:和5050,平均值50.50

#for语句
cont=0
ave=0
for x in range(1,101):
    cont+=x
    if(x==100):
        ave=cont/100
        print('和为:%d,平均值为:%.2f'%(cont,ave))
#和为:5050,平均值为:50.50
#while语句
cont=1
sum1=0
ave=0
while cont<=100:
    sum1+=cont
    if(cont==100):
        ave=sum1/100
    cont+=1
print('和为:%d,平均值为:%.2f'%(sum1,ave))

2. 计算1-100之间能3整除的数的和  结果:4

#for语句
cont=0
for x in range(1,101):
    if 3%x==0:
        cont+=x 
print(cont) 
#while语句
i=0
sum2=0
while i<100:
    i+=1
    if not 3%i:
        sum2+=i
print(sum2)
#4

3. 计算1-100之间不能被7整除的数的和  结果:4315

a=0
for x in range(1,101):
    if x%7!=0:
        a+=x
print(a)
#4315

i=0
sum1=0
while i<100:
    i+=1
    if i%7!=0:
        sum1+=i
print(sum1)
#4315

4.打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个水仙花数,因为153 = 1^3 + 5^3 + 3^3

结果:153 370 371 407

a=(x//100)**3
b=(x%100//10)**3
c=(x%100%10)**3
for x in range(100,1000):
    if (a+b+c)==x:
        print(x)  #153 370 371 407
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容