python修炼之路——控制语句
Python编程之print
python2.x和python3.x的print函数区别:python3.x的print函数需要加括号(),python2.x可以不加。
#-*- coding:utf-8 -*- print("hello world!") #打印 hello world!
print函数参数:
print(parameter, end=’ ’, seq='\t') #default end = ‘\n’, 分割符seq
多行输出:'''...''' 或 """..."""
msg = """ name = "car" color = "red" type = "T" """ print(msg)
高亮输出
格式:\033[显示方式;前景色;背景色 内容 \033[0m
""" 说明: 前景色 背景色 颜色 --------------------------------------- 30 40 黑色 31 41 红色 32 42 绿色 33 43 黃色 34 44 蓝色 35 45 紫红色 36 46 青蓝色 37 47 白色 显示方式 意义 ------------------------- 0 终端默认设置 1 高亮显示 4 使用下划线 5 闪烁 7 反白显示 8 不可见 例子: \033[1;31;40m <!--1-高亮显示 31-前景色红色 40-背景色黑色--> \033[0m <!--采用终端默认设置,即取消颜色设置--> """
使用占位符输出
使用占位符表示二进制、八进制、16进制:
print('the length of %s is %d ( %x %o)' %('Hello Python', len("Hello Python"),len("Hello Python"),len("Hello Python")) ) the length of Hello Python is 12 ( c 14) # %x ---hex %o---oct %d--- dec
使用占位符浮点数、整数:
import math print('PI = %f (PI = %10.3f,PI = %-10.3f,PI = %06d)' %(math.pi,math.pi,math.pi,math.pi)) PI = 3.141593 (PI = 3.142,PI = 3.142 ,PI = 000003) #default( width = 10,precise = 3,align = left;align = rigth;width = 6 filled with 0)
通用占位符: %r
print('%r %r %r' % ('python',12,True)) 'python' 12 True
#default( width = 10,precise = 3,align = left;align = rigth;width = 6 filled with 0)
实例
name = input("please input your name:") age = input("please input your age:") job = input("please input your job:") salary = input("please input your salary:") info = ''' ----------------info of %s ----------- Name:%s Age:%s Job:%s Salary:%s ''' % (name,name,age,job,salary) print(info)
使用format格式化输出
format格式化应用:
info2 = ''' ----------------info of {_name} ----------- Name:{_name} Age:{_age} Job:{_job} Salary:{_salary} '''.format(_name=name, _age=age, _job=job, _salary=salary) print(info2) info3 = ''' ----------------info of {0} ----------- Name:{0} Age:{1} Job:{2} Salary:{3} '''.format(name,age,job,salary) print(info3)
注
-
print()函数可以接受多个变量或常量;
-
注释
单行注释: # 被注释内容
多行注释: """ 被注释内容 """ 或 ''' 被注释内容 '''
-
python中,单引号和双引号没区别,但是在引用是需要匹配,如 "I'm a student";
-
python中,字符串可以使用加号“+”,互联,如"ab" = "a"+"b"
Python编程之变量
变量:存储数据,用于调用数据。
变量实际是内存对象的别名。
申明变量:变量名 = 数据值 (无需申明数据类型,根据初始赋值的数据确定存储类型)
变量定义规则:
-
变量名只能是 字母、数字或下划线的任意组合
-
变量名的第一个字符不能是数字
-
以下关键字不能声明为变量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
name = "car" name2 = name print("now: ",name,name2) # now: car car name = "bike" print("after change: ",name,name2) # after change: bike car #开始时,name2 通过 name 指向内存中的“car”,name = "bike" 只是将 name 重新指向内存中的"bike",但是name2的指向不变 #name,name2赋值是对内存对象的引用,id(name),id(name2),id("car")是一样的,相当于name和name2的id等价于内存对象("car")的id。 #name重新赋值后,id等价于"bike"的id,而name2的id不变,所以name2的值不会变。 #想了解更多的赋值情况,请搜索python深浅拷贝
Python编程之input
python3.x中用户输入函数input(),相当于python2.x中的raw_input()函数。
name = input("please input your name:" )
input函数读取用户输入,默认为字符串形式,如果需要整型,则 int( input() ),强制转换为整型;
type函数可以返回变量数据类型,如type(name)。
Python编程之条件判断
if语句的写法:先写if,然后是一个条件,然后是一个冒号,然后是一个语句块。如果条件为True,则语句块中的代码就会被执行;否则程序会前进到if语句后面的语句。
代码缩进:冒号“ : ”后面表示同一代码块,可以按4个空格缩进,或按“ tab ”键缩进,注意空格和“ tab ” 不能混合使用,容易出现缩进错误。
if 语句
grade = input("请输入学生成绩:") grade = int(grade) if grade >= 90: print ("excellent")
if ... else语句
if ... else 条件判断语句,只有一个代码块会被执行。如果条件为真,则执行的是紧挨着条件的代码块;如果条件为假,则执行的是紧挨着else的代码块。
三元运算: result = value1 if 条件 else value2 # 如果条件为真,result = value1, 否则 result = value2
else子句的用法:紧挨着if语句代码块的下面,写上else(注意缩进量和对应的if语句一致),然后是一个冒号,再然后是语句块。
score = int(input('input score:\n')) if score >= 90: grade = 'A' else: grade = 'B' print ('%d belongs to %s' % (score,grade))
if ... elif ... else...语句
对条件判断可以使用elif子句。
只要某个条件为真,就执行所对应的代码块,然后退出该语句。即不管有多少个条件为真,只有一个代码块会被执行,因为可能存在多个条件同时为真的情况。
if...elif后面可以加else,也可以不加,但是建议使用else来捕获不可能的情况。
#题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%; #利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%; #20万到40万之间时,高于20万元的部分,可提成5%; #40万到60万之间时高于40万元的部分,可提成3%; #60万到100万之间时,高于60万元的部分,可提成1.5%, #高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? I = input('请输入当前利润I:') I = int(I) if I <= 10: print('奖金为:', I*0.1) elif I <= 20: print('奖金为:', (I-10)*0.075+1) elif I <= 40: print('奖金为:', (I-20)*0.05+1+0.75) elif I <= 60: print('奖金为:', (I-40)*0.03+1+0.75+2) elif I <= 100: print('奖金为:', (I-60)*0.015+1+0.75+2+0.6) else: print('奖金为:', (I-100)*0.01+1+0.75+2+0.6+0.6)
Python编程之for循环
for循环会一个元素一个元素地对序列进行遍历,字符串也是序列。
创建for循环:首先是for,然后是一个用于存放各元素的变量,然后是in,然后是待遍历的序列,然后是一个冒号,最后是循环体
实例
#题目:一个整数,它加上100和加上268后都是一个完全平方数,请问该数是多少? import math for n in range(0,10000): x = int(math.sqrt(n+100)) y = int(math.sqrt(n+268)) if (x*x == n+100) and (y*y == n+268): print(n)
实例
#题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 import string s = input('input string:') letters = 0 space = 0 digit = 0 others = 0 for c in s: if c.isalpha(): letters += 1 elif c.isspace(): space += 1 elif c.isdigit(): digit += 1 else: others += 1 print ('char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others))
实例
#闰年 L = input("请输入年月日,例如20160902:") L = str(L) sum = 0 year = int(L[:4]) L1 = (0,31,59,90,120,151,181,212,243,273,304,334) for i in range(0,13): if int(L[4:6]) > i: sum = L1[i] else: sum = sum + int(L[6:8]) break #sum = L1[int(L[4:6])-1] + int(L[6:8]) if year % 400 ==0 or (year % 4 == 0 and year %100 != 0): print(sum+1) else: print(sum)
实例
#题目:输出9*9乘法口诀表。 for i in range(1,10): for j in range(i,10): print('%d * %d = %d' %(i,j,i*j)) print(' ')
实例
#题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? for i in range(1,5): for j in range(1,5): for k in range(1,5): if i != j and i != k and j!=k: print(i*100+j*10+k)
注
跳出for循环时,可以加个else语句,正常跳出循环后执行else后面的代码块;即当循环判断条件不成立时,执行else后面的代码。break跳出不会触发执行else后面的代码。
Python编程之while循环
while条件在某个时候为真时,代码块执行,否则不执行。
#计算等差数列1 4 7 10...前100项的和 x = 1 d = 3 sum = 0 n = 1 while n < 101: sum = sum + x x = x + d n = n + 1 print( sum )
善用死循环,以及break,continue用法
break: 跳出整个循环。
continue: 跳出本次循环,进入下一个循环;即跳回循环的开头。
跳出while循环时,可以加个else语句,正常跳出循环后执行else后面的代码块;即当循环判断条件不成立时,执行else后面的代码。break跳出不会触发执行else后面的代码。
实例
#分解质因数 n = input("请输入数字:") n = int(n) print('{} = '.format(n)) k = 2 while True: if n % k == 0: n = n // k print('{} *'.format(k)) else: k += 1 if n == k: print('{} *'.format(k)) break
实例
'''题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如6=1+2+3.编程找出1000以内的所有完数。 ''' n = int(input('please input number:')) m = n L = [1] k = 2 while True: if n % k == 0: n = n // k L.append(k) else: k = k+1 if n == k: L.append(k) break print(L) if sum(L) == m: print('%d is perfest number' %m) print( '%d = ' %m, end = ' ') for i in range(0,len(L)-1): print('%d +' %L[i], end = ' ') print(L[len(L)-1])
实例
#-*-coding:utf-8 -*- mark_line = "---------------Welcome to login system--------------" print(mark_line) with open("menu.txt", "r", encoding="utf-8") as f_menu: # 从文件读取菜单信息 menu = f_menu.readlines() # 以列表形式保存菜单信息 back_menu = 1 #只用一个循环,使用back_menu来返回上一级目录 while True: #进入菜单循环 if back_menu == 1: #判断正确,进入一级菜单 print(menu[0],menu[1],menu[2]) #打印一级菜单信息 select_menu = input("please input your selection:") #选择一级菜单选项 if select_menu == menu[1][0]: # 匹配正确,设置菜单选项back_menu,进入二级菜单 back_menu = 2 elif select_menu == menu[2][0]: # 一级菜单选项,判断正确,则进入退出判断选项 check_exit = input("Do you want to exit? [y/yes or n/no]") # 用户再次确认是否退出 if check_exit == "y" or check_exit == "yes": # 输入y or yes 退出系统 break elif check_exit == "n" or check_exit == "no": # 输入n or no 不退出系统 back_menu = 1 else: # 判断是否退出一级菜单时,输入其他键(非y/yes/n/no)不做任何操作 print("your input invalid") back_menu = 1 else: # 在一级菜单输入其他键(非1,2)不做任何操作 print("your input invalid") back_menu = 1 elif back_menu == 2: #判断正确进入二级菜单 print(menu[3],menu[4],menu[5]) #打印二级菜单信息 select_menu2 = input("please input your select: ") #选择二级菜单选项 if select_menu2 == menu[4][0]: # 匹配正确,设置菜单选项back_menu,进入三级菜单 back_menu = 3 elif select_menu2 == menu[5][0]: #匹配正确直接返回到一级菜单 back_menu = 1 else: # 在二级菜单输入其他键(非1,2)不做任何操作 print("your input invalid") back_menu = 2 elif back_menu == 3: #判断正确进入三级菜单 print(menu[6], menu[7],menu[8]) #打印三级菜单信息 select_menu3 = input("please input your select: ") if select_menu3 == menu[7][0]: #判断正确返回二级菜单 back_menu = 2 elif select_menu3 == menu[8][0]: #判断正确,退出系统; 此设置只是填充三级菜单 break #任意键返回二级菜单 else: print("your input invalid") back_menu = 3 print("\n") print("********test finished***********") print("退出成功") #退出系统