二进制反码
题目描述
小C在学习二进制运算,他了解到每个非负整数都有其二进制表示。例如,整数 5 可以被表示为二进制 "101",整数 11 可以被表示为二进制 "1011",并且除了 N = 0 外,任何二进制表示中都不含前导零。
二进制的反码表示是将每个 1 变为 0,每个 0 变为 1。例如,二进制数 "101" 的二进制反码为 "010"。现在小C想知道,给定一个十进制数 N,它的二进制反码对应的十进制数是多少。
个人思考
其实这个思路挺清晰的orz,不过像bin()我还蛮少用到的x,巩固一下语法喽,,然后.replace()显然是更好用的,但是因为本题说好是非负整数,直接去掉字符串的前2位也是没有问题滴~
测试样例
样例1:
输入:N = 5 输出:2
样例2:
输入:N = 10 输出:5
样例3:
输入:N = 0 输出:1 法1 去除0b法1 def solution(N: int) -> int: """ 这个函数接受一个整数 N 作为输入参数,并返回其二进制反码的十进制表示。
参数:
N (int): 输入的整数。
返回值:
int: 输入整数的二进制反码的十进制表示。
"""
# 十进制数转为二进制
# binary_str = bin(N).replace('0b', '') # 去除0b前缀也可以用这个方法
binary_str = bin(N)[2:] # 去除0b前缀
inverted_binary_str = ''
# 初始化反码为空字符串
# 二进制转为反码
for char in binary_str:
if char == '1':
inverted_binary_str = inverted_binary_str + '0'
elif char == '0':
inverted_binary_str = inverted_binary_str + '1'
# 把二进制的反码转化为十进制
return int(inverted_binary_str, 2)
def solution(N: int) -> int:
"""
这个函数接受一个整数 N 作为输入参数,并返回其二进制反码的十进制表示。
参数:
N (int): 输入的整数。
返回值:
int: 输入整数的二进制反码的十进制表示。
"""
# 十进制数转为二进制
binary_str = bin(N).replace('0b', '') # 去除0b前缀也可以用这个方法
# binary_str = bin(N)[2:]
inverted_binary_str = ''
# 初始化反码为空字符串
# 二进制转为反码
for char in binary_str:
if char == '1':
inverted_binary_str = inverted_binary_str + '0'
elif char == '0':
inverted_binary_str = inverted_binary_str + '1'
# 把二进制的反码转化为十进制
return int(inverted_binary_str, 2)
bin() 转二进制
bin() 是 Python 的一个内置函数,用于·将一个整数转换为其二进制字符串表示。它返回一个以 '0b' 开头的字符串,后面跟着该整数的二进制表示。
使用方法
bin(x)
参数: x 是你想要转换的整数。
返回值: 返回一个字符串,格式为 '0b...',其中 ... 是整数 x 的二进制表示。
将十进制数 10 转换为二进制
binary_string = bin(10) print(binary_string) # 输出: 0b1010
将负数 -5 转换为二进制
negative_binary = bin(-5) print(negative_binary) # 输出: -0b101
bin() 只接受整数类型的参数。如果传入非整数类型,会抛出 TypeError。 你可以使用 int() 函数将二进制字符串转换回整数,方法是传入字符串和基数 2,例如 int('0b1010', 2) 会返回 10。
int() 函数用于将一个字符串或数值转换为整数。
从字符串转换
你可以将字符串转换为整数。如果字符串表示一个有效的整数,int() 会返回相应的整数值。
num_str = "42" num_int = int(num_str) # 结果是 42
如果字符串不是一个有效的整数,int() 会抛出 ValueError。 invalid_str = "42.0" int(invalid_str) # 这会抛出 ValueError
基数转换
int() 函数可以接受两个参数,第一个是要转换的字符串,第二个是基数(radix),用于指定该字符串的数字系统(如二进制、八进制、十进制、十六进制)。
binary_str = "101" num_from_binary = int(binary_str, 2) # 结果是 5 print(num_from_binary)
hex_str = "1a" num_from_hex = int(hex_str, 16) # 结果是 26 print(num_from_hex)
从浮点数转换
int() 可以将浮点数转换为整数,转换时会向下取整(即去掉小数部分)。
还可以将其他数值类型(如布尔值)转换为整数:
true_value = True false_value = False num_true = int(true_value) # 结果是 1 num_false = int(false_value) # 结果是 0
Python 中的 .replace() 方法
在 Python 中,.replace() 是字符串对象的方法,用于替换字符串中的指定子字符串。它非常方便,可以用来处理文本数据。
1. 基本语法
str.replace(old, new[, count])
old:要被替换的子字符串。new:用于替换的子字符串。count(可选):一个整数,指定替换的次数。如果不指定,则会替换所有匹配的子字符串。
2. 返回值
.replace() 返回一个新的字符串,原始字符串不会被修改,因为字符串在 Python 中是不可变的。
3. 示例
基本替换
text = "Hello, world!"
new_text = text.replace("world", "Python")
print(new_text) # 输出: Hello, Python!
替换次数限制
text = "apple apple apple"
new_text = text.replace("apple", "orange", 2)
print(new_text) # 输出: orange orange apple
在这个例子中,只有前两个 "apple" 被替换为 "orange"。
不进行替换的情况
如果 old 在字符串中不存在,.replace() 将返回原始字符串。
text = "Hello, world!"
new_text = text.replace("Java", "Python")
print(new_text) # 输出: Hello, world!
4. 其他注意事项
- 区分大小写:替换是区分大小写的,因此
"Hello"和"hello"被视为不同的字符串。
text = "Hello, World!"
new_text = text.replace("hello", "Python")
print(new_text) # 输出: Hello, World!
- 返回类型:返回的结果是字符串类型。
5. 应用场景
.replace() 方法在文本处理中非常有用,例如:
- 替换敏感词
- 格式化输出
- 清理数据
总之,.replace() 是一个非常实用的方法,能够高效地处理字符串中的替换操作。