输出格式化

十六进制转十进制
描述
BoBo写了一个十六进制整数ABCDEF,他问KiKi对应的十进制整数是多少。

输入描述:

输出描述:
十六进制整数ABCDEF对应的十进制整数,所占域宽为15。
备注:
printf可以使用使用格式控制串“%md”输出域宽为m的十进制整数。

num='ABCDEF'
num=int(num,16)
print(f'{num:15d}')

• int(x, base) 能将特定进制的字符串转为十进制整数(base=16 就是十六进制转十进制)。
• f-string 中 {num:15d} 表示十进制输出,总宽度15,右对齐,不够补空格。
• Python 变量无固定类型,num 从字符串被重新赋值为整数,类型动态改变。

缩短二进制
描述
我们处理的整数通常用十进制表示,在计算机内存中是以二进制补码形式存储,但通常二进制表示的整数比较长,为了便于在程序设计过程中理解和处理数据,通常采用八进制和十六进制,缩短了二进制补码表示的整数,但保持了二进制数的表达特点。请输出十进制整数1234对应的八进制和十六进制。

输入描述:

输出描述:
十进制整数1234对应的八进制和十六进制(字母大写),用空格分开,并且要求,在八进制前显示前导0,在十六进制数前显示前导0X。
备注:
printf可以使用使用格式控制串“%o”、“%X”分别输出八进制整数和十六进制整数,并使用修饰符“#”控制前导显示

print('{} {}'.format(oct(1234).replace('o',''),hex(1234).upper()))

1. 一句话人话概括

这段代码把十进制数 1234 分别转成八进制十六进制字符串,手动去掉八进制前缀中的字母 'o',并把十六进制前缀中的字母转成大写,最后用 format() 拼成一行打印出来。

2. 逐行/分块白话拆解

  • oct(1234):将整数 1234 转为八进制字符串,结果是 '0o2322'(前缀 0o 表示八进制,数字部分是 2322)。
  • .replace('o',''):把字符串中所有小写字母 o 替换为空(删掉)。'0o2322''02322'(注意:前面的数字 0 保留,只删了字母 o)。
  • hex(1234):将整数 1234 转为十六进制字符串,结果是 '0x4d2'(前缀 0x 表示十六进制,数字字母是 4d2)。
  • .upper():把字符串中所有小写字母转为大写。'0x4d2''0X4D2'(前缀和字母都大写了)。
  • '{} {}'.format(...):用占位符 {} 接收两个处理好的字符串,中间用空格隔开,最终打印 02322 0X4D2

3. 精华知识点总结(小白复制版)

oct()hex() 自带进制前缀(0o / 0x),用 replace() 或切片 [2:] 可去掉。
upper() 只影响英文字母,数字和符号 0x 中的 x 也会被转成大写 X
str.format() 是早期 Python 主流格式化方式,用 {} 做占位符,按顺序传参。

4. 工程避坑指南(防崩溃手册)

  • 替换不严谨replace('o','') 会删掉所有字母 o。虽然八进制数字里不含 o,但这是“有隐患的写法”。更推荐用 removeprefix('0o')(Python 3.9+)或 [2:] 切片去前缀,更安全直观。
  • upper() 的作用范围:它会连前缀 0x 里的 x 也变大写,变成 0X。如果你只想要数字字母大写而保留小写前缀(如 0x4D2),需要单独处理(如 '0x' + hex(1234)[2:].upper())。
  • 参数数量匹配format() 里写了两个 {},就必须恰好传两个参数,否则报 IndexError

牛牛的空格分隔
在这里插入图片描述

a = input()
b = int(input())
c = float(input())
print(f"{a} {b} {c:6f}")

• input() 读的全是字符串,int() 和 float() 负责转换成数值类型。
• f-string 中直接写 " " 空格,输出时就会带空格,这是最简单的拼接方式。
• 致命混淆点:{c:6f} 是“总宽度6,精度默认6位小数”的意思,想保留2位小数必须写成 {c:.2f}(带点号)。
• 若实际数字长度超过设定的最小宽度,宽度限制会直接失效。

牛牛的对齐
描述
读入 3 个整数,牛牛尝试以后两个数字占 8 个空格的宽度靠右对齐输出。
输入描述:
输入三个整数,用空格隔开。
输出描述:
输出 3 个整数以第二三个数字占 8 个空格靠右对齐输出
示例1
输入:
2 7 5
输出:
2 7 5

a,b,c= map(int,input().split())
print(f"{a:<8d}{b:<8d}{c:<8d}")

精华知识点总结
• map(函数, 可迭代对象) 可批量对每个元素执行相同操作,省去手写循环。
• map(int, input().split()) 是处理“一行多个整数”的标准写法,简洁高效。
• f-string 中 {:<8d} 表示左对齐、最小宽度8、十进制整数(右侧补空格)。
• 解包时数量必须严格匹配,多一个少一个都会报 ValueError。
• map 返回的是迭代器,解包后即消耗完毕,不能重复使用。

进制A+B
描述
输入一个十六进制数a,和一个八进制数b,输出a+b的十进制结果(范围-231~231-1)。
输入描述:
一行,一个十六进制数a,和一个八进制数b,中间间隔一个空格。
输出描述:
一行,a+b的十进制结果。
示例1
输入:
0x12 05
输出:
23

num=input().split()
num=[int(num[0],16),int(num[1],8)]
print(sum(num))

基本运算符

加法

在这里插入图片描述

a, b = map(int,input().split())
print(a + b)

除法

输入:5 2
输出:2

a,b = map(int,input().split())
print(a//b)

• map(int, input().split()) 是读取"一行多个整数"的标准极简写法。
• // 叫地板除,结果永远是整数,但遵循"向下取整"规则(对负数极其重要)。
• 解包赋值 a,b = … 要求右侧元素个数严格等于左侧变量数。
• map 返回的是迭代器,解包后即耗尽,不可重复使用。

余数

a,b = map(int,input().split())
print(a%b)

% 在 Python 中叫取模(Modulo),结果的正负号永远与除数 b 一致。

在其他编程语言(如 C/Java)中 % 叫取余(Remainder),结果符号与被除数一致(向零截断)。Python 的 % 是取模(Modulo),结果符号与除数一致(向下取整)。例如:

-10 % 3:Python 输出 2(因为 -10 = (-4)*3 + 2);而 C/Java 输出 -1(-10 / 3 = -3 向零取整,余数 -1)。

10 % -3:Python 输出 -2(结果与除数 -3 同号);C/Java 输出 1。

浮点数的个位数字

输入:13.141
输出:3

a = float(input())
print(int(a)%10)

运算

整数的十位

在这里插入图片描述

a = int(input())
print(a//10%10)

精华知识点总结
• //10 相当于“右移一位删除个位”,%10 相当于“取最后一位”。
• 组合 a//10%10 就是提取整数的十位数字。
• 运算符优先级:// 和 % 同级,从左到右计算(先 //10,后 %10)。
• 提取百位就写 a//100%10,千位就 a//1000%10,规律是“先砍后取”。

日期的计算

在这里插入图片描述

x,n = map(int,input().split())
if(x+n)%7 == 0:
    print(7)
else:
    print((x+n)%7)

x, n = map(int, (input().split())):读取一行两个整数(如 “5 3”),批量转成 int 后解包赋值给 x 和 n。
if (x + n) % 7 == 0::先求两数之和,再对 7 取模。如果余数等于 0,走 if 分支。
print(7):当余数为 0 时,输出 7(把“整除”映射为最大值)。
else: print((x + n) % 7):如果余数不是 0(即 1~6),就直接输出这个余数。

更多推荐