通常用来填充语法空白。
"""
选择语句
"""
# 注意缩进
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_num
if 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 = num2
if num3 > max:
max = num3
if num4 > max:
max = num4
print(max)
运行结果:
请输入数字1:5
请输入数字2:8
请输入数字3:2
请输入数字4:3
8
练习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天")
运行结果:
请输入月份:4
30天
请输入月份∶4
30天
知识点补充:
"""
真值表达式
if 数据:
语句
本质就是使用bool函数操作数据
条件表达式
"""
#1. 真值表达式
if 100:
# if bool (100):
print("真值")
if 0:
print(1)
else:
print(2)
print(3)
运行结果是:
2
3
str_input = input("请输入∶")
if str_input:
print("输入的字符串不是空的")
#2.条件表达式:有选择性的为变量进行赋值
sex =None
if input("请输入性别:") =="男":
sex = 1
else:
sex = 0
print(sex)
# 另一种表达:
sex =1 if input("请输入性别:") =="男" else 0
print(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)
"""
循环语句
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 = 0
while 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 = 0
while count < 6:
print(count)
count += 1
count = 2
while count < 8:
print(count)
count += 1
count = 0
while count < 4:
print(count*2)
count += 1
#或者:
count =0
while 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 ** 2
if 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 + 1
while 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.01
count = 0
while thickness <= 8844.43 * 1000 :
count += 1
thickness *= 2
print(count)
运行结果:
30
练习6:猜数字游戏(1.0版本),游戏运行产生一个1-100之间的随机数。让玩家重复猜测,直到猜对为止。【大了,小了,猜对了﹐总共猜了多少次】
#随机数工具(在开头写一次)
import random
#产生一个随机数
random_number = random.randint(1, 100)
count = 0
guess_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 random
random_number = random.randint(1, 100)
count = 0
while 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 random
random_number = random.randint(1, 100)
count = 0
while 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 =0
while 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 = 0
for num in range(1,101):
sum += num
print(sum)
sum = 0
for num in range(2,101,2):
sum += num
print(sum)
sum = 0
for num in range(10,37):
sum += num
print(sum)
运算结果:
5050
2550
621
练习2:随机加法考试,随机产生两个数字(1-10) ,在控制台中获取两个数相加的结果,如果用户输入正确得10分,总共3道题,最后输出得分。
import random
score = 0
for 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 += 10
print("总分是"+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 = 0
for item in range(1,101):
# 满足条件则累加
if item % 5 == 0:
sum_value += item
print (sum_value)
# 或者:
sum_value = 0
for item in range( 1,101):
# 不满足条件则跳过本次循环,继续下次循环
if item % 5 != 0:
continue
sum_value += item
print(sum_value)
运行结果:
1050
练习5:累加10-50之间个位不是2,5,9的整数。
sum = 0
for item in range(10,51):
# 个位是2,5,9的整数则跳过
if(item % 10 ==2 or item % 10 == 5 or item % 10 == 9):
continue
sum += item
print(sum)