Python基础刻意训练——DAY2

Python基础刻意训练——DAY2

1.主要内容:条件与循环语句
前言:
python的基本语法结构的形式,和C(++)相差无几,只是对于某些写法,相对更加简洁一点。比如,python的基本语法结构忽略了给条件打上括号,(这样写代码相对更快一点)。再如,python的基本语法结构忽略了{ }的存在——因为python的一部分灵魂在于缩进,即它靠着缩进来实现语法结构的划分(也说明了在python中对于缩进的重视是必不可少的)。

条件语句的基础语法形式:

  • 基本结构:

if 条件:
    执行语句A
else:
    执行语句B

注意:
1. 冒号必不可少
2.注意缩进,形成一定的结构
3.else 语句可以写(else语句中有要执行的B),也可以不写(else语句中没有要执行的代码)
举个栗子:

import random
a=random.randint(1,10)
if a > 5:
	print('运气好,a是'+str(a))
else:
	print('运气不好,a是'+str(a))
  • 较复杂的判断语句:

对于条件很多的语句,我们需要将语句的条件进行划分,但基本结构只有简单的两种情况,这个时候就需要相应的一些结构以及一些逻辑运算辅助。

嵌套循环结构:
例如:
对于一个分段函数,存在几个划分的区间(分别是a<0,a>=0&&a<5,a>=5&&a<10,a>=10),各区间的函数表达式都不一样,这时候要求函数值,首先要对自变量所在的区间进行判断
则:

a=int(input('请输入:'))
if a>=10:
    f=a
else:
    if a<0:
        f=a**2
    else:
        if a>=5:
            f=a**3
        else:
            f=a**4
print(f)

可以发现,条件判断语句可以形成嵌套结构。由于python自身存在的缩进形式,导致整个代码形成斜向下的样子,这样的代码格式并不利于代码的表达——如果,条件很多,将会拉很长的左右间隔
于是,我们对这个代码进行了如下的改进

a=int(input('请输入:'))
if a>=10:
    f=a
elif a<0:
    f=a**2
elif a>=0 and a<5:
    f=a**4
elif a>=5 and a<10:
    f=a**3
print(f)

在这里,利用了逻辑运算符关键字(and,还有其他的关键字 or与not),同时采用了常见的嵌套方式:elif(类似于C语言中的else if)。这样一来,条件可以均匀的排布下去,而不会使得代码变得很“奇怪”。

对于条件语句,在真正使用的时候,还可以结合一些操作,使得判断语句发挥其他的功能——比如break,continue等等

另外,在条件判断中,有一种三元操作符可以简化判断的过程,直接进行表达(类似于C语言中的三元操作,val=b>c?b:c——基本的取两个数的最大最小值)
在python中,这句代码可以这样表达:

val = b if b>c else c ##满足条件则取if前面的数字,不满足则取else后面的数字

最后,再给一个示例来练习条件判断语句:
题目:输入年(year)月(month),判断该月份的天数n
代码如下:

year,month=map(int,input('请输入年份与月份(隔空输入):').split())
if month%2!=0:
    if month<=7:
        print('该月份天数为31天')
    else:
        print('该月份天数为30天')
else:
    if month>=8:
        print('该月份天数为31天')
    elif month!=2:
        print('该月份天数为30天')
    elif (year%4==0 and year%100!=0) or year%400==0:
        print('该月份天数为29天,为闰月')
    else:
        print('该月份天数为28天')
    

循环语句的基础语法形式:
循环结构有两种基本形式的循环:for循环与while循环

  • 基本结构

for 目标 in 表达式:
    执行语句A     ##for循环

while 判断条件:
    执行语句B    ##while语句

注意:

  1. for语句和while语句每执行一次语句后,都要回去判断条件是否成立(对于for语句,判断的是目标还在不在表达式中)
  2. 可能出现死循环的情况,这个时候,可以采用外部键入“Ctrl+C”的方式中断循环

举个栗子:

import random
for each in range(1,100):
    print(random.random())   ###通过循环语句进行随机数的模拟

再举个栗子:

list1=[]
a=1
while a<=10:
    list1.append(a)
    a+=1      ##创建一个数组
for each in list1:
    if each%2==0:
        list1[each-1]*=2    ##对于数组中的偶数进行扩倍数
    print(list1[each-1])    ##输出
  • 较为复杂的循环结构

在实际应用中,往往根据需要对基本的结构进行一些变化和处理,比如,进行多次嵌套(for语句二重嵌套进行二维数组的操作),再比如,利用break加上判断语句,帮助跳出循环,从而使得语句能够去除掉不必要的一些运算。

给一个综合了条件判断与循环的例子:

###开锁,猜密码
number=1
name='Typhoid'
passwd=999999
while number<=3:
    name_in=input('用户名为:')
    passwd_in=int(input('密码为:'))
    if name_in==name and passwd_in==passwd:
        print('挑战成功')
        break
    else:
        print('不对哦,再来一次')
        print('您还剩余%d次机会!!'.format(3-number))
        number +=1
else:
    print('挑战失败')

2.今日学到的BIF

  • assert(断言)——设定在容易出错的位置,判断其是否成立
assert (1>2)    #会自动报错,抛出AssertionError
assert (1==1)   ##正常执行程序

借助其操作,貌似可以实现一种较为简易的捕捉异常的方式。

  • input(输入语句)
    python2.x版本与python3.x有所区别
    python2输入数据,会根据其输入的情况,归为相应的一些数据类型;但是在python3中,为了程序更加稳定的运行,统一的将输入的标准数据类型,直接默认为str类型数据。因此,在本文中的输入操作赋值中,加上了int()强制转换的操作,保证得到的数据是整型数据。
    参考链接:https://blog.csdn.net/qq_29883591/article/details/78177279
a=input('请输入:')    
type(a)   ##得到的是str类型的数据
a=int(input('请输入:'))
type(a)   ##得到的是int类型的数据
  • map()——基本映射
    map函数为映射,也可称为哈希。该函数非常实用,而且其应用较为灵活,今天就先简单的提一提今天使用map的原理。
    注意:python2与python3有着区别—>
    python的map函数得到的是序列,而python3得到的迭代器,需要将该迭代器进行实例化,得到一个序列或者是其他的数据结构。
    map(迭代函数,可迭代序列)——对于迭代函数可以有着灵活的自定义。
    对于代码map(int,input(‘请输入:’.split()))——int作为一个强制转换的函数,后面的为一个字符串序列,最后得到的是新的生成的序列
    参考链接:https://www.jb51.net/article/128315.htm
def square(x):
    return x*x
k=map(square,[1,5,6,9,7])
type(k)    #显示的是迭代器
list(k)    #得到具体的数列
  • split()函数
    str.split(s,num) 有两个参数——s表示分割符号(不写则默认为空格;分割符不能打出来),num表示分割次数
    最后得到的是字符串组成的序列
    例如:
s='shj shjd hj'
s.split()    ##得到序列['shj','shjd','hj']
s='abajak'
s.split('a')   ##得到['', 'b', 'j', 'k']

参考链接:https://blog.csdn.net/NeverLate_gogogo/article/details/85294665

list(range(0,10))   #结果为[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

type(range(10))    #结果为class ‘range’ ——反映了range生成的是范围
typelist(range(10))#这个才是list实例化后生成的数组

x='shishid'
for i in range(len(x)):    #配合for循环语句,划定该范围
	print(x[i])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值