自学Python错误记录

本文提供了一系列Python编程练习,包括股价计算小程序的错误修复和优化,成年人年龄判断的逻辑调整,判断语句嵌套的改进,以及使用while循环实现猜数字游戏和打印九九乘法表。每部分都展示了如何处理输入输出、条件判断和循环控制,同时强调了代码的可读性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.股价计算小程序

stock_code = 003032
  • 错误1:定义整数变量不能用0去占位(整数不能以0开头),这里要用字符串的定义方式
print("每日增长系数是:%s,经过%s的增长后,股价达到了%s" % (stock_price_daily_growth_factor,growth_days,stock_price * stock_price_daily_growth_factor ** growth_days))
  • 错误2:字符串占位格式化,当后面有多个变量时,每个变量后面的逗号还要加空格
"""

股价计算小程序
"""
name = "传智播客"   # 公司名
stock_price = 19.99   # 当前股价
stock_code = "003032"   # 股票代码
stock_price_daily_growth_factor = 1.2   # 股票每日增长系数
growth_days = 7   # 增长天数
print(f"公司:{name},股票代码:{stock_code},当前股价:{stock_price}")
print("每日增长系数是:%s,经过%d天的增长后,股价达到了%.2f" % (stock_price_daily_growth_factor, growth_days, stock_price * stock_price_daily_growth_factor ** growth_days))
  • 完整代码
name = "传智播客"
stock_price = 19.99
stock_code = "003032"
stock_price_daily_growth_factor = 1.2
growth_days = 7
finally_stock_price = stock_price * stock_price_daily_growth_factor ** growth_days
print(f"公司:{name},股票代码:{stock_code},当前股价:{stock_price}")
print("每日增长系数是:%.1f,经过%d天的增长后,股价达到了%.2f" % (stock_price_daily_growth_factor, growth_days, finally_stock_price))
  • 优化

2.成年人判断练习题

"""

成年人判断
"""

print("欢迎来到黑马儿童游乐场,儿童免费,成人收费。")
age = input()
print("请输入你的年龄:%d" % int(age))
if age > 18:
    print("30,游玩需要补票10元。")
print("祝您游玩愉快。")
  • 报错:TypeError: ‘>’ not supported between instances of ‘str’ and ‘int’
  • 在print语句中输出的age确实被转化成数字类型,但if语句里比较的还是字符串类型的age
  • 不属于if语句内,最好和if语句空一行
# 获取键盘输入
print("欢迎来到黑马儿童游乐场,儿童免费,成人收费。")
age = int(input("请输入你的年龄:"))

# 通过if判断是否是成年人
if age >= 18:
    print("您已成年,游玩需要补票10元。")

print("祝您游玩愉快。")
  • 优化

3.判断语句的嵌套

公司要发礼物,条件是:
1.必须是大于等于18岁小于30岁的成年人
2. 同时入职时间需满足大于两年,或者级别大于3才领取

age = int(input("请输入你的年龄:"))
work_time = int(input("请输入你的入职时间:"))
work_degree = int(input("请输入你的级别;"))
if age >= 18:
    if age < 30:
        if work_time >= 2:
            print("恭喜你可以领取一份礼物!")
        else:
            print("不好意思,您的入职时间不满足要求。")
        if work_degree > 3:
            print("恭喜你可以领取一份礼物!")
        else:
            print("不好意思,您的级别不满足要求。")
    else:
        print("不好意思,您的年龄不满足要求。")
else:
    print("不好意思,您的年龄不满足要求。")
  • 我的过程

数据测试:
请输入你的年龄:18
请输入你的入职时间:1
请输入你的级别;4
不好意思,您的入职时间不满足要求。
恭喜你可以领取一份礼物!

  • 存在问题:入职时间不满足要求,结果却能领取礼物
  • 解决问题:遇到“或者”的情况,用elif
age = 17
year = 2
level = 4
if age >= 18:
    print("你是成年人。")
    if age < 30:
        print("你的年龄达标了。")
        if year > 2:
            print("恭喜你,年龄和入职时间都达标,可以领取礼物。")
        elif level > 3:
            print("恭喜你,年龄和级别都达标,可以领取礼物。")
        else:
            print("不好意思,尽管年龄达标,但是入职时间和级别都不达标。")
    else:
        print("不好意思,年龄太大了。")
else:
    print("小朋友不可以领取。")
  • 优化
  • 通过改变age、year、level的值去测试数据

4.终极猜数字

import random
num = random.randint(1, 10)
if int(input("请输入你第一次猜测的数字:")) == num:
    print("恭喜你,第一次猜对了!")
# 这里出现问题:elif中的数字已经不是第一次猜测的数字了
elif int(input("请输入你第一次猜测的数字:")) > num:
    print("你猜的数大了哦~")
    if int(input("请输入你第二次猜测的数字:")) == num:
        print("恭喜你,第二次猜对了!")
else:
    print("你猜的数小了哦~")
  • 问题解决:利用变量去接收
import random
num = random.randint(1, 10)
print(num)
num1 = int(input("请输入你第一次猜测的数字:"))
if num1 == num:
    print("恭喜你,第一次猜对了!")
elif num1 > num:
    print("你猜的数大了哦~")
    # 比如说数猜大了,那就进行第二次猜测,同时数猜小了,也要进行第二次猜测,但是代码又是一样的
    num2 = int(input("请输入你第二次猜测的数字:"))
    if num2 == num:
        print("恭喜你,第二次猜对了!")
    elif num2 > num:
        print("你第二次猜的数大了哦~")
        num3 = int(input("请输入你第三次猜测的数字:"))
        if num3 == num:
            print("恭喜你,第三次猜对了!")
        elif num3 > num:
            print("你第三次猜的数大了哦~机会已用完")
        else:
            print("你第三次猜的小了哦~机会已用完")
    else:
        print("你第二次猜的小了哦")
        num3 = int(input("请输入你第三次猜测的数字:"))
        if num3 == num:
            print("恭喜你,第三次猜对了!")
        elif num3 > num:
            print("你第三次猜的数大了哦~机会已用完")
        else:
            print("你第三次猜的小了哦~机会已用完")
else:
    print("你猜的数小了哦~")
    num2 = int(input("请输入你第二次猜测的数字:"))
    if num2 == num:
        print("恭喜你,第二次猜对了!")
    elif num2 > num:
        print("你第二次猜的数大了哦~")
        num3 = int(input("请输入你第三次猜测的数字:"))
        if num3 == num:
            print("恭喜你,第三次猜对了!")
        elif num3 > num:
            print("你第三次猜的数大了哦~机会已用完")
        else:
            print("你第三次猜的小了哦~机会已用完")
    else:
        print("你第二次猜的小了哦")
        num3 = int(input("请输入你第三次猜测的数字:"))
        if num3 == num:
            print("恭喜你,第三次猜对了!")
        elif num3 > num:
            print("你第三次猜的数大了哦~机会已用完")
        else:
            print("你第三次猜的小了哦~机会已用完")

  • 虽然满足题目要求,但是代码也太冗余了
# 1.构建一个随机的数字变量
import random
num = random.randint(1, 10)

guess_num = int(input("输入你要猜的数字:"))

# 2.通过if判断语句进行数字的猜测
if guess_num == num:
    print("恭喜,第一次就猜中了")
else:
    if guess_num > num:
        print("你猜测的数字大了")
    else:
        print("你猜测的数字小了")

    guess_num = int(input("再次输入你要猜的数字:"))

    if guess_num == num:
        print("恭喜,第二次猜中了")
    else:
        if guess_num > num:
            print("你第二次猜测的数字大了")
        else:
            print("你第二次猜测的数字小了")

        guess_num = int(input("第三次输入你要猜的数字:"))

        if guess_num == num:
            print("恭喜,第三次猜中了")
        else:
            print("对不起,三次机会已用完")

  • 优化

5.while循环猜数字

"""

演示while循环的基础案例-猜数字
"""

import random
num = random.randint(1, 100)
print(num)

i = 0
flag = True
# flag本身就是布尔变量,不需要再去判断
while flag == True:
    guess_num = int(input("猜测数字:"))
    i += 1
    if guess_num == num:
        flag = False
        print("恭喜你第%d次猜对了:" % i)
    else:
        print("对不起你猜错了")
  • 未实现猜不中提示大了或小了
# 获取范围在1-100的随机数字
import random
num = random.randint(1, 100)
print(num)

# 定义一个变量,记录总共猜测了多少次
count = 0

# 通过一个布尔类型的变量,做循环是否继续的标记
flag = True

while flag:
    guess_num = int(input("输入猜测数字:"))
    count += 1
    if guess_num == num:
        print("恭喜你猜中了")
        flag = False
    else:
        if guess_num > num:
            print("你猜大了")
        else:
            print("你猜小了")

print(f"你总共猜了{count}次")
  • 优化

6.九九乘法表

"""

演示使用while的嵌套循环
打印输出九九乘法表
"""

"""

- 补充知识1:print输出不换行
  # 在print语句中,加上end = ''即可输出不换行了
  print("Hello", end = '')
  print("World", end = '')

- 补充知识2:制表符\t
  # 它可以让我们的多行字符串进行对齐
  print("Hello world")
  print("itheima best")
  
  print("Hello \tWorld")
  print("itheima \tbest")
"""

"""

分析:
- 外层循环:i <= 9
- 内层循环:j <= i
"""

i = 1
while i <= 9:
    j = 1
    while j <= i:
        print(f"{j}*{i}={i*j}\t", end=	'')
        j += 1
    print()
    i += 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值