python基础(二)
文章目录
- 语句
-
- 1.pass语句
- 2.选择语句
- 3.循环语句
语句
1.pass语句
通常用来填充语法空白。
2.选择语句
""" 选择语句"""# 注意缩进sex = input("请输入性别∶")if sex == "女": print("您好,女士!")elif sex == "男": print("您好,先生!")else: print("性别未知")print("后续逻辑")
调试(重要)
让程序中断,逐语句执行。
目的是:1、审查程序运行过程中变量取值 2、审查程序运行的流程
步骤:
1、加断点
2、调试运行
3、执行一行 F8
4、停止 Ctrl+F2
【pycharm调试问题与解决】:Connection to Python debugger failed soket closed
调试失败,在界面左下方出现:“Connection to Python debugger failed soket closed”,如下图所示。
解决方案:
第一步:
第二步:
练习1:python基础(一)练习1的改编,当钱不够时,提示"金额不足”。钱够时,提示"应找回”,之后调试程序。
str_goods_price = input("请输入商品单价:")str_goods_num = input("请输入商品数量:")str_goods_totalprice = input("请输入金额:")float_goods_price = float(str_goods_price)int_goods_num = int(str_goods_num)float_goods_totalprice = float(str_goods_totalprice)change = float_goods_totalprice - float_goods_price * int_goods_numif change < 0: print("金额不足")else: print("找零:"+str(change))
练习2:在控制台中获取一个季度(春夏秋冬),显示相应的月份。【春 --> 1月2月3月、夏 --> 4月5月6月、秋 --> 7月8月9月、冬 --> 10月11月12月】
quarter = input("请输入季度:")if quarter=="春": print("1月2月3月")elif quarter=="夏": print("4月5月6月")elif quarter == "秋": print("7月8月9月")elif quarter == "冬": print("10月11月12月")#如果前面条件满足﹐后续条件不再判断。
练习3:在控制台中录入一个数字,再录入一个运算符(+ - * /),最后录入一个数字。根据运算符,计算两个数字。【如果运算符不是加减乘除,则提示“运算符有误”】
num1 = int(input("请输入数字1:"))operator = input("请输入运算符:")num2 = int(input("请输入数字2:"))if operator=="+": print(num1+ num2)elif operator=="-": print(num1- num2)elif operator == "*": print(num1* num2)elif operator == "/": print( num1/ num2)else: print("运算符输入有误")
练习4:在控制台中分别录入4个数字,打印最大的数字。
num1 = int(input("请输入数字1:"))num2 = int(input("请输入数字2:"))num3 = int(input("请输入数字3:"))num4 = int(input("请输入数字4:"))#假设第一个是最大值max = num1#以此与后面进行比较if num2 > max : # 发现更大的,则替换假设的。 max = num2if num3 > max: max = num3if num4 > max: max = num4print(max)运行结果:请输入数字1:5请输入数字2:8请输入数字3:2请输入数字4:38
练习5:在控制台中录入一个成绩,判断等级(优秀╱良好╱及格╱不及格/输入有误)。
# 方法一:grade = float(input("请输入成绩:"))if grade >= 90 and grade <= 100: print("优秀")elif grade >= 80 and grade < 90: print("良好")elif grade >=60 and grade < 80: print("及格")elif grade < 60 and grade >= 0: print("不及格")else: print("输入有误")#方法二:python支持grade = float(input("请输入成绩:"))if 90 <= grade <= 100: print("优秀")elif 80 <= grade < 90: print("良好")elif 60 <= grade < 80: print("及格")elif 0 <= grade < 60: print("不及格")else: print("输入有误")#方法三:grade = float(input("请输入成绩:"))if grade > 100 or grade <0: print("输入有误")elif grade >= 90: print("优秀")elif grade >= 80: print("良好")elif grade >= 60: print("及格")else: print("不及格")运行结果:请输入成绩:56不及格请输入成绩:56不及格请输入成绩:56不及格
练习6:在控制台中获取一个月份,打印天数或者提示"输入有误”。【1 3 5 7 8 10 12–>31天,4 6 9 11 -->30天, 2 -->28天】
# 方法一:month =int(input("请输入月份:"))if month==1 or month==3 or month==5 or month==7 or month==8 or month==10 or month==12: print("31天")elif month==4 or month==6 or month==9 or month==11: print("30天")elif month == 2: print("28天")else: print("输入有误")# 方法二:#注意:python字符串比大小有含义,后面会涉及month = int(input("请输入月份∶"))if month < 1 or month > 12: print("输入有误")elif month == 2: print("28天")elif month == 4 or month == 6 or month == 9 or month == 11: print("30天")else: print(" 31天")运行结果:请输入月份:430天请输入月份∶430天
知识点补充:
""" 真值表达式 if 数据: 语句 本质就是使用bool函数操作数据 条件表达式"""#1. 真值表达式if 100: # if bool (100): print("真值")if 0: print(1)else: print(2)print(3)运行结果是:23str_input = input("请输入∶")if str_input: print("输入的字符串不是空的")#2.条件表达式:有选择性的为变量进行赋值sex =Noneif input("请输入性别:") =="男": sex = 1else: sex = 0print(sex)# 另一种表达:sex =1 if input("请输入性别:") =="男" else 0print(sex)
练习1:在控制台中获取一个整数,如果是偶数为变量state赋值"偶数",否则赋值"奇数”。
num1 = int(input("请输入整数:"))state = "奇数" if num1 % 2 else "偶数"print(state)
练习2:在控制台中录入一个年份,如果是闰年,给变量day赋值29,否则赋值28。
#保持代码可读性year = int(input("请输入年份:"))day = 29 if year % 4 == 0 and year % 100 != 0 or year % 400 == 0 else 28 print(day)#不建议使用下面这种year = int(input("请输入年份:"))day = 29 if not year % 4 and year % 100 or not year % 400 else 28 print(day)
3.循环语句
""" 循环语句 while 条件: 循环体"""# 死循环:循环条件永玩是满足的。while True: usd = int(input("请输入美元∶")) print(usd * 6.9) if input("输入q键退出:")=="q": break
练习:在控制台中获取一个季度(春夏秋冬),显示相应的月份。循环执行,按e键退出,并进行调试。
while True: quarter = input("请输入季度:") if quarter=="春": print("1月2月3月") elif quarter=="夏": print("4月5月6月") elif quarter == "秋": print("7月8月9月") elif quarter == "冬": print("10月11月12月") if input("按e键退出")=="e": break
""" while 计数"""# 需求:执行三次count = 0while count < 3: #0 1 2 count += 1 usd = int( input("请输入美元∶")) print(usd * 6.9)
练习:
在控制台中输出0 1 2 3 4 5
在控制台中输出2 3 4 5 6 7
在控制台中输出0 2 4 6
count = 0while count < 6: print(count) count += 1count = 2while count < 8: print(count) count += 1count = 0while count < 4: print(count*2) count += 1#或者: count =0while count <=6: print(count) count += 2
练习1:在控制台中获取月份,显示季度或者提示月份错误。
month = int(input("请输入月份:"))if month < 0 and month > 12: print("月份错误")elif month >= 10 : print("冬")elif month >= 7 : print("秋")elif month >= 4 : print("夏")else: print("春")
练习2:在控制台中获取年龄,要求如下:
如果小于0岁,打印输入有误
如果一个人的年龄小于2岁,就打印一条消息,指出他是婴儿。
如果一个人的年龄为2(含)~13岁,就打印一条消息,指出他是儿童。
如果一个人的年龄为13(含)~20岁,就打印一条消息,指出他是青少年。
如果一个人的年龄为20(含)~65岁,就打印一条消息,指出他是成年人。
如果一个人的年龄超过65(含)岁~150岁,就打印一条消息,指出他是老年人。
150岁以上,打印"那不可能"。
age = int(input("请输入年龄:"))if age < 0 : print("打印输入有误")elif age >= 150 : print("那不可能")elif age >= 65 : print("他是老年人")elif age >= 20 : print("他是成年人")elif age >= 13 : print("他是青少年")elif age >= 2 : print("他是儿童")else: print("他是婴儿")
练习3:根据身高体重,参照BMI,返回身体状况。
BMI:用体重干克数除以身高米数的平方得出的数字,注意体重输入干克数,身高输入米
中国参考标准
体重过低BMI<18.5
正常范围18.5≤BMI<24
超重24≤BMI<28
Ⅰ度肥胖28≤BMI<30
Ⅱ度肥胖30≤BMI<40
Ⅲ度肥胖BMI≥40.0
weight = float(input("请输入体重:"))height = float(input("请输入身高:"))bmi = weight / height ** 2if bmi < 0 : print("不可能")elif bmi >= 40 : print("Ⅲ度肥胖")elif bmi >= 30 : print("Ⅱ度肥胖")elif bmi >= 28 : print("Ⅰ度肥胖")elif bmi >= 24 : print("超重")elif bmi >= 18.5 : print("正常范围")else: print("体重过低")
练习4:在控制台中,获取一个开始值,一个结束值,将中间的数字打印出来。
例如∶开始值3,结束值10,打印 4 5 6 7 8 9
start = int(input("请输入开始值:"))end = int(input("请输入结束值:"))count = start + 1while count < end : print(count) count += 1#或者:start = int(input("请输入开始值:"))end = int(input("请输入结束值:"))while start < end - 1: start += 1 print(start)
练习5:一张纸的厚度是0.01毫米,请计算对折多少次,超过珠穆朗玛峰8844.43米。
thickness = 0.01count = 0while thickness <= 8844.43 * 1000 : count += 1 thickness *= 2print(count)运行结果:30
练习6:猜数字游戏(1.0版本),游戏运行产生一个1-100之间的随机数。让玩家重复猜测,直到猜对为止。【大了,小了,猜对了﹐总共猜了多少次】
#随机数工具(在开头写一次)import random#产生一个随机数random_number = random.randint(1, 100)count = 0guess_number = int(input("请输入数字:"))while (guess_number != random_number) : count += 1 if(guess_number > random_number) : print("大了") else: print("小了") guess_number = int(input("请输入数字:"))print("猜对了,总共猜了"+str(count+1)+"次")#或者:import randomrandom_number = random.randint(1, 100)count = 0while True: count += 1 input_number = int(input("请输入数字∶")) if input_number > random_number: print("大了") elif input_number < random_number: print("小了") else: print("猜对了,总共猜了" + str(count) +"次") break
练习7:猜数字游戏(2.0版本),最多猜3次,如果猜对,提示"猜对了,总共猜了?次",如果超过次数,提示“游戏失败”。
import randomrandom_number = random.randint(1, 100)count = 0while count < 3: #三次以内 count += 1 input_number = int(input("请输入数字∶")) if input_number > random_number: print("大了") elif input_number < random_number: print("小了") else: print("猜对了,总共猜了" + str(count) +"次") break #退出循环体,不会执行else语句。else:#while的条件不满足 #三次以外 print("游戏失败")
练习8:重复根据成绩判断等级,如果录入空字符串则退出程序。如果成绩录入错误次数达到3,则退出成绩并提示"成绩错误过多”。
count =0while count < 3: str_grade = input("请输入成绩:") if str_grade == "": break #不会执行else语句 grade =float(str_grade) if grade > 100 or grade <0: print("输入有误") count += 1 elif grade >= 90: print("优秀") elif grade >= 80: print("良好") elif grade >= 60: print("及格") else: print("不及格")else: print("成绩错误过多")
知识点补充
""" for:适合执行预定次数 while:适合根据条件循环执行。"""# for 变量 in 可迭代对象:# 循环体str01 = "我叫苏大强!"#item存储的是字符串中每个字符的地址for item in str01: print(item)# 整数生成器:range(开始值,结束值,间隔),返回的数字不包含结束点# range(开始值,结束值)间隔默认为1# range(结束值),开始点默认为O# for + range:更善于执行预定次数。for item in range(1,5,1): print(item)
练习1:
1、累加1–100的和【1+2+3+…+100】
2、累加1–100之间偶数和【2+4+6+8+…+100】
3、累加10–36之间的和
# sum用于存储累加和的变量sum = 0for num in range(1,101): sum += numprint(sum)sum = 0for num in range(2,101,2): sum += numprint(sum)sum = 0for num in range(10,37): sum += numprint(sum)运算结果:50502550621
练习2:随机加法考试,随机产生两个数字(1-10) ,在控制台中获取两个数相加的结果,如果用户输入正确得10分,总共3道题,最后输出得分。
import randomscore = 0for item in range(3): num1 = random.randint(1,10) num2 = random.randint(1,10) num3 = num1 + num2 num = float(input("请输入"+str(num1)+ "+"+ str(num2)+"=?:")) if(num == num3): score += 10print("总分是"+str(score))运行结果:请输入1+6=?:7请输入4+1=?:5请输入5+9=?:44总分是20
练习3:在控制台中获取一个整数,判断是否为素数。【素数:只能被1和自身整除的正数】
思路∶排除法,使用2到当前数字之间的正数判断,如果存在被整除﹐则不是素数。如:判断9,
能否被2-8之间的数字整除,其中3可以,所以不是素数。
备注∶没有判断2以下的数字。
prime = int(input("请输入整数:"))#判断2到prime之间的数字,能否整除prime。for item in range(2,prime): if(prime % item == 0): print("它不是素数") break #如果发现满足条件的数字﹐就不再判断后面的else: print("它是素数")
练习4:累加1-100之间,能被5整除的数字。
sum_value = 0for item in range(1,101): # 满足条件则累加 if item % 5 == 0: sum_value += itemprint (sum_value)# 或者:sum_value = 0for item in range( 1,101):# 不满足条件则跳过本次循环,继续下次循环 if item % 5 != 0: continue sum_value += itemprint(sum_value)运行结果:1050
练习5:累加10-50之间个位不是2,5,9的整数。
sum = 0for item in range(10,51): # 个位是2,5,9的整数则跳过 if(item % 10 ==2 or item % 10 == 5 or item % 10 == 9): continue sum += itemprint(sum)