1.输入输出
Python常用的两种输出值的方式:表达式语句和 print() 函数
1.1 print
常规操作,基本输出
先写出数据,再进行print()输出
name = "炘南"
age = 20
job = "炎龙铠甲"
hobby = "Play the piano"
print("大家好,我是:", name, "年龄是:",age, "职业是:", job, "爱好是:", hobby)
输出格式优化
使用“%” 操作符实现字符串的格式化输出
name = "炘南"
age = 20
job = "炎龙铠甲"
hobby = "Play the piano"
#print("大家好,我是:", name, "年龄是:",age, "职业是:", job, "爱好是:", hobby)
print("大家好,我是:%s,年龄是:%d,职业是:%s, 爱好是:%s" % (name, age, job, hobby))
常用格式化输出: %d 整数型 %f 浮点型 %s 字符串 %o 八进制 %x 十六进制
拓展:关于%f %d知识点
# %d
w, e, r = 1, 23, 345
print("%d" % w)
print("%d" % e)
print("%d" % r) # 默认打印为从左到右,
# ----1
# ----23
# ----345
# %nd:n位宽,位宽必须n>=数据本身的数字数量,否则无效
print("%2d" % w)
print("%3d" % e)
print("%3d" % r)
# ---- 1
# ---- 23
# ---- 345
f-string用{}作为占位符,即字符串前面加f。
name = "炘南"
age = 20
job = "炎龙铠甲"
hobby = "Play the piano"
#print("大家好,我是:", name, "年龄是:",age, "职业是:", job, "爱好是:", hobby)
print(f"大家好,我是:{name},年龄是:{age},职业是:{job}, 爱好是:{hobby}")
1.2 input
input():默认的标准输入是键盘。从键盘获取数据,保存到指定的变量中
书写格式:变量名 = input("提示语")
#从input获取的数据,以字符串的形式保存
name1 = input("请输入您喜欢的动漫角色")
print("您喜欢的动漫角色是: ", name1, str)
#----请输入您喜欢的动漫角色石昊
#----您喜欢的动漫角色是: 石昊 <class 'str'>
从input获取的数据,以字符串的形式保存
# 从input获取的数据,以字符串的形式保存
name1 = input("请输入您喜欢的动漫角色")
# time = input() # 在下方 %d 输出时会报错会报错,
# 转换成float类型
time = float(input("请输入动漫角色的修炼时间")) # 不加float,会报错,
print("name1:", type(name))
print("time:", type(time))
#----name: <class 'str'>
#---- time: <class 'float'>
print("大家好,我是:", name1, "修炼时间:", time, "年")
print("大家好,我是:%s,修炼时间:%d年" % (name1, time))
print(f"大家好,我是:{name1},修炼时间: {time}年")
#----请输入您喜欢的动漫角色石昊
#----请输入动漫角色的修炼时间100
#----<class 'float'>
#----大家好,我是: 石昊 年龄是: 修炼时间: 100.0 年
#----大家好,我是:石昊,修炼时间:100年
#----大家好,我是:石昊,修炼时间: 100.0年
为什么必须加 float():
如果你不加 float(),直接写:
time = input()
那么 time 是一个字符串,比如用户输入 3.5,实际得到的是 '3.5',而不是数字 3.5。一句话:不加 float(),输入的是字符串,不能参与数学运算,容易报错;加上 float() 才能安全地进行数值计算。
2.数据类型转换
2.1 隐式类型转换
在隐式类型转换中,Python 会自动把一种数据类型转换成另一种数据类型,不需要人为地去干预。 这种隐式型转换大多用在数学运算上。
w = 5
e = 2.5
r = w / e # 5.0 / 2.5
print(r) # 2.0
对两种不同类型的数据类型进行运算,较低数据类型(整数)就会转换为较高数据类型(浮点数)以避免数据丢失。
z = 123
x = 4.56
c = z + x
print("z 数据类型为:",type(z))
print("x 数据类型为:",type(x))
print("c 值为:",c)
print("c 数据类型为:",type(c))
代码解析:
代码中对于两个不同数据类型的变量 z 和 x 进行相加,运算的结果存储在变量 c 中。
查看运算z、x变量的数据类型: z:整数型(integer)、x:浮点型(float);所以新的变量 c 是浮点型(float)
这是因为 Python 会把较小的数据类型转换为较大的数据类型,以避免数据丢失。
2.2 显式类型转换
显式类型转换是将对象的数据类型转换为所需的数据类型。
通常使用 int()、float()、str() 等预定义函数来执行显式类型转换。
#报错操作
#"123" ---- 123 (str->int) √ 字符串可转整数
#"abc" ------> (str->int) × 字符串不可转整数
n = str(123.2) #----定义str类型
m = float(n) #----增加一个可以接收转换后n的m(用于存放转换类型后的n)
print(n, type(n))
print(m, type(m))
#----123.2 <class 'str'>
#----123.2 <class 'float'>
例如:整数型(int)和字符串(str)分别定义两个数值,但不能直接进行隐式类转换,就需要进行强制显示类转换:
#错误代码
#v = 123
#b = "456"
#print("v 数据类型为:",type(v))
#print("b 数据类型为:",type(b))
#print(v+b)
#会出现代码错误 TypeError ,即 Python 在这种情况下无法使用隐式转换。
#修改,进行显示类转换
v = 123
b = "456"
a = int(b) # 定义一个新的变量存放转换为整数型的b变量
print("v 数据类型为:", type(v))
print("b 数据类型为:", type(a))
print(v + a)
#----579
# 显示类转换格式:转换类型(需要转换的变量)
int(n) 转换成整数
float(n) 转换成浮点数
str(n) 转换成字符串
list(n) 转换成列表
tuple(n) 转换成元组
bin(n) 转换成二进制
oct(n) 转换成八进制
hex(n) 转换成十六进制
3 分支语句
3.1基础结构
if 表达式1:
表达式1成立,执行此代码
else:
表达式1不成立,执行此代码
###上述代码结构一定要注意缩进。
if 3 > 7:
print("铠甲升级")
else:
print("铠甲解体")
#----铠甲解体
if 9 % 3:
print("升级") # 1为真(不整除,有余)
else:
print("解体") # 0为假(整除为0,得到的数字0,看作假,默认执行else)
#----解体
if 9 % 4:
print("升级") # 1为真(不整除,有余)
else:
print("解体") # 0为假(整除为0,得到的数字0,看作假,默认执行else)
# ----升级
3.2分层结构
if 表达式1:
表达式1成立,执行此代码
elif 表达式2:
表达式2成立,执行此代码
else:
上边表达式都不成立,执行此代码
# 90-100 A 80-89 B 70-79 C <70 补考
t = int(input("请输入成绩"))
if (t >= 90) and (t <= 100):
print("学习等级为A,优秀")
elif t >= 80:
print("学习等级为B,良好")
elif t >= 70:
print("学习等级为C,及格")
else:
print("学习成绩不合格,请参加补考")
3.3嵌套结构
if 表达式1:
if 表达式2:
表达式2成立,执行此代码
elif 表达式3:
表达式3成立,执行此代码
else:
表达式1不成立,执行此代码
# 在上述分层结构命令代码,若输入数字不在(0~100)之间或输入非数字,则会出现错误;
t = int(input("请输入成绩"))
if (t >= 0) and (t <= 100):
if (t >= 90) and (t <= 100):
print("学习等级为A,优秀")
elif t >= 80:
print("学习等级为B,良好")
elif t >= 70:
print("学习等级为C,及格")
else:
print("学习成绩不合格,请参加补考")
else:
print("输入错误")
练习:
1.输入三角形三条边,判断是否能构成三角形,如果能,输出是什么类型的三角形
# 只判断:等边 等腰 直角 普通
y = int(input("请输入第一条边长"))
u = int(input("请输入第二条边长"))
i = int(input("请输入第三条边长"))
if y + u > i and u + i > y and y + i > u:
if y == u == i:
print("为等边三角形")
elif y == u or y == i or u == i:
print("组成等腰三角形")
elif (y ** 2 + u ** 2 == i ** 2) or (u ** 2 + i ** 2 == y ** 2) or (y ** 2 + i ** 2 == u ** 2):
print("组成直角三角形")
else:
print("普通三角形")
else:
print("输入错误,不能构成三角形")
2.使用input函数录入以下数据:
数学成绩、语文成绩、是否是共青团员。
如果平均成绩达到 90分以上,并且是共青团员,则输出“三好学生”
如果平均成绩达到 90以上不是共青团员 或者平均成绩80以上且是共青团员,
则输出“二好学生”。均不满足上述情况,输出“再接再厉”
o = int(input("请输入数学成绩"))
p = int(input("请输入语文成绩"))
s = int(input("请输入是否为共青团员(是输入“1”,否输入“0”)"))
if (o >= 0) and (o <= 100) and (p >= 0) and (p <= 100):
if s == 1 or s == 0:
if o + p >= 90 and s == 1:
print("三好学生")
elif o + p >= 90 and s == 0:
print("二好学生")
elif o + p >= 80 and s == 1:
print("二好学生")
else:
print("再接再厉")
else:
print("是否为共青团员,输入错误")
else:
print("数学成绩或语文成绩输入错误")
4.循环语句
Python 中的循环语句有 for 和 while
4.1while循环
代码格式:
表达式1
while 表达式2:
代码块
表达式3
表达式1:定义循环变量的初始值
表达式2:循环的终止条件
表达式3:循环变量的值增加或减少
#代码执行流程:
#1.检查条件表达式是否为 True
#2.如果为 True,执行循环体中的代码
#3.执行完循环体后,再次检查条件表达式
#4.重复上述过程,直到条件表达式为 False
# 基本计数循环
q = 1
while q <= 5:
print(f"这是第 {q} 次循环")
q += 1 # q=q+1 ***重要:修改循环变量,避免无限循环***
print("循环结束")
练习:
1.求1-10的数字和
# 使用 while 循环累加
w = 1
e = 0
while w <= 10:
e += w # e=e+w
w += 1
print(f"1-10 的数字和是: {e}")
2.求1-10的偶数和
# 使用 while 循环累加
w = 2
e = 0
while w <= 10:
w % 2 == 0
e += w # e=e+w
w += 2 #累加2
print(f"1-10 的数字偶数和是: {e}")
while 循环使用 else 语句:循环正常结束时的处理
如果 while 后面的条件语句为 false 时,则执行 else 的语句。
r = 0
while r < 5:
print (r, " 小于 5")
r = r + 1
else:
print (r, " 大于或等于 5")
嵌套 while 循环
表达式1
while 表达式2:
表达式4
while 表达式5:
语句块
表达式6
表达式3
外层循环变量修改一次,内层循环执行一轮
# 嵌套 while 循环
y = 1
while y <= 3:
u = 1
while u <= 3:
print(f"({y},{u})", end=' ')
u += 1
print() # 无东西打印,但在此处,打印空语句起到换行作用
y += 1
4.2 for 循环
4.2.1基础 for 循环
在Python中 for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串。
格式: for 临时变量 in 可迭代对象
q = "welcome"
print(q)
for w in q:
print(w)
e = [2, 3.45, "word"]
print(e)
for i in e:
print(i, end="-")
4.2.2 range()函数
range()函数:生成一组整数序列 (整数范围值可以配合 range() 函数使用)
range(start,stop,step)
start 开始值 默认为0,可省略
stop 终止值 不包括stop
step 步长 默认为1,可省略
#----1
for x in range(10):
print(x, end=" ")
#----range(10) 不是 0 到 10 的值,而是值 0 到 9
#----2
for x in range(2, 8):
print(x, end=" ")
#----range() 函数默认 0 为起始值,也可以通过添加参数来指定起始值:
range(2, 8),表示为 2 到 8(但不包括 8)
#----3
for x in range(2, 12, 2):
print(x, end=" ")
#----range() 函数默认将序列递增(步长)为 1,
#----也可以通过添加第三个参数来指定增量值:range(2, 30, 3)
#----步长数相当于从初始值的数值位加上步长数值到达的数位,显示当前数位值
4.2.3 循环控制语句
break - 立即退出循环(即终止当前循环)
# 使用 break 提前退出循环
t = 10
while t > 0:
print(t)
t -= 1 # t=t-1
if t == 5:
print("达到5,提前退出")
break
print("循环结束")
continue - 结束本次循环,继续下一次循环 (停止当前迭代的循环)
tr = "python"
for i in tr: # 开始一个 for 循环,遍历字符串 tr 中的每个字符
if i == 't':
continue # 控制语句:跳过当前循环的剩余部分,直接进入下一次循环
# 当遇到 't' 时,执行 continue,后续的 print 语句不会执行
print(i, end="-")
pass - 空语句,是为了保持程序结构的完整性。
for x in [0, 1, 2,3,4,5]:
pass
拓展:
1.print默认换行,可以自定义结束格式
print("qqq", end="*")
print("ww")
2. end=' ' -使用空格作为结束符
在打印内容后添加一个空格(而不是默认的换行符),后续打印会继续在同一行输出,用空格分隔
print("Hello", end=' ')
print("World", end=' ')
print("Python")
#----Hello World Python
3. end='\t' - 使用制表符作为结束符
在打印内容后添加一个制表符(Tab,通常相当于 4 或 8 个空格),后续打印会继续在同一行输出,但会跳到下一个制表位。
print("Name", end='\t')
print("Age", end='\t')
print("gender")
print("li", end='\t')
print("30", end='\t')
print("女")
print("Bob", end='\t')
print("25", end='\t')
print("男")
作业:
1.输入一个数,输出这个数的所有因子(能力有限,只考虑正整数)
例:3:1 3
4:1 2 4
6:1 2 3 6
# 输入一个数,输出这个数的所有因子(只考虑正整数)
d = int(input("请输入正整数"))
if d != 0:
f = 1
while f <= d:
if d % f == 0: # 判断d能不能被f整除
print(f, end="\t")
f += 1 # f=f+1
else:
print("输入整数有误")
2.猜数字
已知生成代码
import random
# 生成一个1到100之间的随机整数
num = random.randint(1, 100)
print(f"生成的随机整数是: {num}")
import random
# 生成一个1到100之间的随机整数
num = random.randint(1, 100)
h = 1
while h < 4:
print("第", h, "次")
g = int(input("请输入一个0~100的数字"))
if (g >= 0) and (g <= 100):
if g > num:
print("您猜大了")
elif g < num:
print("您猜小了")
elif g == num:
print("恭喜您猜对了")
h += 1
else:
print("输入有误")
print(f"生成的随机整数是: {num}")
加强记忆:
1.输入任意两个数,输出两数之间(包括这两个数)偶数之和
q = int(input("请输入第一个整数"))
w = int(input("请输入第二个整数"))
if q <= w:
e = 0
r = q # 这一步是为了保留q的最初值,方便下面打印
while q <= w:
if q % 2 == 0:
e += q # e=q+e
q += 1 # q=q+1
print(f"{r}和{w}两数之间(包括这两个数)偶数之和为:{e}")
# 这里的r即是q最初值
else:
print("输入数值需要第一个数小于等于第二个数")
#----请输入第一个整数3
#----请输入第二个整数9
#----3和9两数之间(包括这两个数)偶数之和为:18
2.输出2-999之内的所有完数
# 完数是指一个数恰好等于它的真因子(即除了自身以外的约数)之和。
# 例如,6的真因子有1、2、3,而1+2+3=6,因此6是完数。
#解题思路:1不是完数(因为完数定义中至少要有两个真因子,而1没有真因子),所以我们从2开始。
t = 2
while t <= 999:
y = 1
u = 0 # 定义一个真因子(除本身外)的和
while y < t:
if t % y == 0:
u += y # u=u+y 小于t并被t整除的因子的和
y += 1
if u == t: # 判断得到的最终和是否等于t本身
print(t, end="\t")
t += 1
#----6 28 496
3.输出2~100 范围内的所有质数
# 质数:大于1的自然数,且只能被1和它本身整除。 例如:2,3,5,7
# 解题思路:大于2的偶数不可能是质数,所以质数在奇数中
i = 2
while i <= 100:
if i == 2: # 2是质数,直接输出
print(2, end="\t") # 先打印出2
elif i % 2 != 0: # 排除偶数
o = 3
p = 1 # 定义一个p变量,用于下面判断奇数中的质数 1为真,0为假
while o < i:
if i % o == 0:
p = 0
o += 2 # o=o+2 不加1是因为判断的数据全部为奇数,从3开始加2,全为奇数
if p == 1:
print(i, end='\t')
i += 1
#----2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
4.输入一个十进制的数,输出其二进制有几位为1(正数)
# 解题思路:通过不断除以2并取余数(即使用位运算)来统计1的个数。
q = int(input("输入一个正整数"))
if q <= 0:
print("请输入正整数!")
else:
s = 0
while q > 0:
if q % 2 == 1:
s += 1 # s=s+1
q //= 2 # q=q//2 相当于留下商再去while循环
print("二进制中1的个数为:", s)
#----输入一个正整数9
#----二进制中1的个数为: 2
# 第二种方法:(跳出思维,即我为什么一定要算出来呢,让代码自己生成我要的样子不好吗?)
a = int(input("输入一个十进制数:"))
b = bin(a)
print(b)
c = 0
for i in b:
if i == '1':
c += 1
print(c)
#----输入一个正整数9
#----二进制中1的个数为: 2
5429





