双分支结构: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