CC++ & Algorithm

Python整数类型——像数字积木一样有趣

中等0
语言版本:C++
概述:本节用小朋友熟悉的数字积木比喻,带你认识Python中的整数类型,学会如何写整数、做计算,并了解整数可以变得很大。

Python整数:从数星星到算零花钱

小朋友,你每天都会和数字打交道:数一数书包里有几本书,算一算今天花了多少零花钱,或者看看考试得了多少分。这些像1、2、3、0、-5这样的数,数学里叫整数。在Python的世界里,整数就像你最熟悉的数字积木——你把它写出来,电脑就能记住它、用它做各种计算。

比如你想记下自己的零花钱:

pocket_money = 20  # 口袋里有20元

电脑就知道了:pocket_money这个“名字”里装着整数20。

整数长什么样?正数、负数、还有零

整数家族有三个成员:

  • 正整数:你数糖果、算人数时用到的,比如 199365
  • :表示什么都没有,就是 0
  • 负整数:欠别人钱、零下温度时用到,比如 -10-3

生活中处处有整数:

  • 考试成绩:小明考了 95 分,小红考了 100
  • 气温:夏天室温 30 度,冬天零下 -5
  • 零花钱:妈妈给了 50 元,买零食花了 20 元,剩下 30

在Python里,你直接写数字就行,不需要加引号(加了引号就变成文字了)。

score = 95          # 考试分数95
temperature = -5    # 零下5度
nothing = 0         # 一个也没有

用整数做计算——像搭积木一样简单

整数可以像数字积木一样进行各种运算,看看下面这些:

加法 + 和减法 -

  • 你今天有 10 元零花钱,妈妈又给了 5 元,现在一共有多少?
    money = 10 + 5  # 加法:10+5=15
    
  • 买了 3 元的冰淇淋,剩下多少?
    left = 15 - 3   # 减法:15-3=12
    

乘法 *

  • 你每天存 2 元零花钱,一个星期(7天)能存多少?
    week_save = 2 * 7  # 乘法:2乘以7等于14
    

除法 / —— 注意!结果变成小数

  • 7 块饼干平均分给 2 个好朋友,每人得多少?
    each = 7 / 2  # 结果是3.5,不是整数
    
    这个 3.5浮点数(像小数),不是整数了。如果你想得到整数结果,可以用后面要学的 //

取余 % —— 算算还剩多少

  • 还是 7 块饼干分给 2 人,每人分 3 块,还剩几块?就用取余:
    remain = 7 % 2  # 结果是1(7除以2余1)
    
    取余在小学数学里就是“余数”。比如:
    • 10 % 3 等于 1(10除以3余1)
    • 15 % 5 等于 0(15能除尽,没有余数)
    • 8 % 10 等于 8(8不够除,余数就是8本身)

** —— 指数增长好惊人

  • 你家有 2 只小兔子,每只每个月生 2 只,3个月后一共有多少只?(简单想想,2的3次方)
    rabbits = 2 ** 3  # 2的3次方=8
    
    注意:** 是乘方,2 ** 3 就是 2 × 2 × 2

混合运算 —— 先乘除后加减,括号先算

和数学课学的一样,Python也遵守运算法则:

result = 3 + 4 * 2     # 先乘后加:3 + 8 = 11
result2 = (3 + 4) * 2  # 括号优先:7 * 2 = 14

整数的超能力:能变得超级大

很多编程语言(比如C++、Java)的整数有个“最大限制”,太大了就会出错。但Python的整数特别厉害——它可以变得非常大,大到你想不到!

比如算一下2的1000次方:

big = 2 ** 1000  # 2的1000次方
print(big)       # 结果是一个几百位的数字!

你尽管写 2 ** 100000,电脑也能算出来(不过可能会慢一点,因为太大了)。这就像你的数字积木可以无限搭高,永远不会倒。

新手最容易犯的错误

1. 把 /// 弄混

  • / 是普通除法,永远返回浮点数(小数):
    print(7 / 2)   # 3.5
    print(10 / 5)  # 2.0 (注意,虽然是整数结果,但还是浮点数)
    
  • //整数除法(也叫地板除),只取商的整数部分(舍弃小数):
    print(7 // 2)  # 3
    print(10 // 5) # 2
    print(3 // 5)  # 0 (因为3不够分给5个人,每人0块)
    

2. 取余 % 对负数有点不一样

  • 如果被除数是正数,结果也是正数:7 % 3 等于 1
  • 如果被除数是负数,结果通常也是负数:
    print(-7 % 3)  # 结果是2,不是-1!因为Python保证余数是非负的(但要符合数学规则)
    
    小朋友别慌,你可以记:先正常算余数,然后加上除数再取一次。实际编程中负数取余很少用到,先记住正数的情况就好。

3. 把数字和文字混在一起

# 错误写法
print("我有" + 5 + "个苹果")  # 会报错:字符串不能直接加整数

要改成:

print("我有" + str(5) + "个苹果")  # 用str()把整数变成文字

完整示例:算零花钱的小能手

我们写一个完整的小程序,帮小明算算他的零花钱怎么花:

# 小明每天有10元零花钱
daily_money = 10        # 每天零花钱(元)

# 问他第几天了,用input获取输入(输入的是字符串,要转成整数)
day_input = input("小明,你已经拿到零花钱第几天了?请输入数字:")
day = int(day_input)    # 把输入的字符串转成整数

# 算总零花钱
total_money = daily_money * day  # 总零花钱 = 每天 * 天数

# 他想攒钱买一个98元的乐高,看看够不够
lego_price = 98          # 乐高价格(元)

# 先算能买几个,用整数除法
lego_count = total_money // lego_price  # 能买几个(取整)
remain_money = total_money % lego_price # 买完后还剩多少钱

print("你一共攒了", total_money, "元")
print("可以买", lego_count, "个乐高,还剩", remain_money, "元")

# 如果钱不够,告诉他差多少
if total_money < lego_price:
    need = lego_price - total_money
    print("还差", need, "元才能买一个乐高哦")

运行示例(假设小明输入第10天):

小明,你已经拿到零花钱第几天了?请输入数字:10
你一共攒了 100 元
可以买 1 个乐高,还剩 2 元

试试自己输入不同的天数,看看结果有什么变化。

接下来学什么?

你已经学会了整数和它的运算。接下来可以:

  • 学习浮点数(带小数点的数,比如 3.142.5
  • 学习变量(像 scoremoney 这样用来存数据的名字)
  • 学习字符串(比如 "你好")和如何进行类型转换
  • 学习条件判断if 语句)做更多判断

整数是编程的基石,就像你搭积木时用的第一块积木。现在就去你电脑上的Python环境(IDLE或在线编辑器)里敲一敲上面的代码吧,试试自己编几个整数运算,你会发现编程其实很有趣!

例题精讲

1单选题

在Python中,执行表达式 7 // 2 的结果是什么?

A3.5
B3
C4
D3.0
2单选题

在Python中,int(3.9) 的结果是多少?

A3
B4
C3.9
D报错
3判断题

在Python 3中,整数类型没有固定大小限制,可以表示任意大的整数。

4填空题
阅读以下代码,在横线处填写适当的内容,使得程序输出4。
x = 20
y = ___
result = x // y
print(result)
5填空题
阅读以下代码,在横线处填写适当的运算符,使得输出结果为<class 'int'>。
a = 10
b = 3
c = a ___ b
print(type(c))