Python 学习笔记 day02--输入输出

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
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值