选择结构

双分支结构if......else 语句

问题:你能编写一段代码,来判断用户输入的字符串是否为回文吗?

(字符串与倒序回文串相等为回文串)

str = input("请输入字符串:")

if (str == str[::-1]):

        print(str+"为回文串")

else:

print(str+"不是回文串")

请输入字符串:abcdcba

abcdcba为回文串

请输入字符串:abcccc

abcccc不是回文串

双分支结构:if......else语句

问题:输入三角形三边,求三角形面积,对用户输入的数据做合法性检查。

import  math

a = float(input("请输入三角形的边长a:”))

b=float(input("请输入三角形的边长b: "))

c=float(input("请输入三角形的边长c:"))

if(a+b>c and  a+c>b and b+c>a and a>0 and b>0 and c>0):

        h=(a+b+c)/2

        area=math.sqrt(h*(h-a)*(h-a)*(h-c)

        print("用户输入数据有误!”)

多分支结构:if.....elif......else语句

语法为:

if 条件表达式1:

        语句块1

elif 条件表达式2:

        语句块2

elif条件表达式3:

        语句块3

......

else:

        语句块n

else后面不可以加条件,else分支为可选

分支结构:If语句的嵌套

问题:从键盘输入三位的正整数,输出其中的最大的一位数字是多少。例如:输入386,输出8;输入290,输出9.

1、需要从用户输入的三位数中分离出百位,十位和个位分别是多少。

第一种写法:

num =int(input("请输入一个三位正整数:“))

a= str(num)[0]  #取num的百位数字

b=str(num)[1] #取num的十位数字

c=str(num)[2] #取num的各位数字

(代码中分离一个整数利用了字符串的切片,因此,在切片之前需要用str函数将输入的数据从整数类型转换为字符串类型。)

第二种写法:

num =int(input("请输入一个三位正整数:”))

a=num//100       #取num的百位数字

b=num//10%10   #取num的十位数字

c=num%10    #取num的个位数字

(也可以使用整除“//”和求余“%”运算符来分离整数的每一位)

第三种写法:

2.从百位,十位和个位中找出最大的一个数字。

print(num,"中最大的数字是:",max(a,b,c))

for语句

for语句用一个循环控制器(python中称为迭代器)来描述其语句块的重复执行方式,它的基本语法形式是:

                for变量in迭代器:

                        语句块

for和in都是关键字,语句中包含了三个部分,其中最重要的就是迭代器。

由关键字for开始的行称为循环的头部,语句块称为循环体。

语句块需要缩进。且块中各个语句的缩进量必须相同。

for语句中的迭代

1)字符串作为迭代类型,可以直接放在for语句中作为迭代器使用。

         for s in "abcde"

                 print(s,ends="  "

>>>a  b  c  d   e 

   在for循环的循环体print语句中,s作为变量,可以按顺序取到“abcde”中的每一个字符,反复执行语句“print(s,end=“  ”)“,就输出了每一个字符,并在没错表达式输出后以两个空格结束。

eg:(1)for  s  in  "abcde"

                    print(s,end="")

输出显示为:abcde

(2)for  s  in  "abcde"

               print(s,end="   ")

输出显示为:a    b    c    d    e 

(3)for  s  in   "abcde"

        print(s,end=","

输出显示为:a,b,c,d,e,

(4)for  s   in  "abcde"

        print(s,end=";")

输出显示为:a;b;c;d;e;

问题:统计英文句子中大写,小写和数字各有多少个?

str=input("请输入一句英文:")

count_upper=0

count_lower=0

count_digit=0

for  s  in  str :

        if   s.isalpha():   count_upper= count_upper+1

        if  s.islower():   count_lower=  count_lower+1

        if  s.isdigit():   count_digit=  count_digit+1

print("大写字符:  ", count_upper)

print("小写字符:",count_lower)

print("数字字符:",count_digit)

for语句中的迭代

range()函数生成迭代序列

range是python中的一个内置函数,调用这个函数就能产生一个迭代序列,因此适合放在for语句的头部,函数range有以下几种不同的调用方式:

(1)range(n):

得到的迭代序列为:0,1,2,3,......,n-1。例如:range(100)表示序列0,1,2,3,......,99。当n小于等于0的时候序列为空。

for  i  in  range(10):

        print(i,end='  ')

输出显示为:0  1  2  3  4  5  6  7  8  9

(2)range(m,n):

得到的迭代序列为:m,m+1,m+2,......,n-1。例如:range(11,16)表示序列11,12,13,14,15。当m>=n的时候序列为空。

for  i   in  range(10,20):

        print(i,end= ’  ‘)

输出显示为:10  11  12  13  14  15  16  17  18   19

for语句中的迭代

range()函数生成迭代序列

range是python中的一个内置函数,调用这个函数就能产生一个迭代序列,因此适合放在for语句的头部,函数range有以下几种不同的调用方式。

range(m,n,d):

得到的迭代序列为:m,m+d,m+2d,......,按步长值d递增,如果d为负则递减,直至那个最接近但不包括n的等差值。因此range(11,16,2)表示序列11,13,15;而range(15,4,-3)表示的序列为:15,12,9,6。

        for  i  in range (10,20,5):

                print(i,end='   ')

输出显示为:10    15

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值