📜  如何在Python中将字符串string转换为整数int

📅  最后修改于: 2020-07-23 04:49:41             🧑  作者: Mango

在Python中,可以使用以下方法将字符串转换为整数:

方法1: 使用内置的int()函数: 

如果您的字符串包含一个十进制整数,并且希望将其转换为int,则将字符串传递给int()函数,它将把您的字符串转换为等效的十进制整数。

语法:int(string, base)

参数:
string:由1、0或十六进制,八进制数字等组成。
base :(整数值)数字的底数。

返回:返回一个整数值,该整数值与给定基数中的string等效。 

代码:

Python3

# 用十进制值初始化字符串 
string = "100"
  
# 显示数据类型 
print(type(string)) 
  
# 将字符串转换为int 
string_to_int = int(string) 
  
# 显示数据类型 
print(type(string_to_int))

输出: 

 

默认情况下,int()期望字符串参数表示一个十进制整数。假定在任何情况下,您都将一个十六进制字符串传递给int(),则它将显示ValueError。在这种情况下,您可以在字符串中指定数字的底数。

码:

Python3

# 用十六进制值初始化字符串 
string = "0x12F"
  
# 显示数据类型 
print(type(string)) 
  
# 将十六进制字符串转换为int 
string_to_int = int(string,  
                    base=16) 
# 显示数据类型 
print(type(string_to_int))

输出:

 

方法2:使用用户定义的函数:

 我们还可以通过创建自己的用户定义函数将字符串转换为int。

方法: 

  • 我们将检查数字是否带有“-“号,如果它是负数,则将包含“-“号。如果它包含“-“号,那么我们将从包含数字的第二个位置开始转换。
  • 任何数字(假设为321)都可以写成以下结构:10 ** 2 * 3 + 10 ** 1 * 2 + 10 ** 0 * 1
  • 同样,我们使用ord(argument)分割每个输入数字   ord(‘0’)将返回48,ord(‘1’)将返回49,依此类推。
  • 这里的逻辑是ord(‘1’)– ord(‘0)= 1,ord(‘2’)– ord(‘0’)= 2,依此类推,这使我们可以从给定的数量中提取有效数字输入号码。
  • 最后,我们从函数中获得的结果是一个整数,该整数是我们从给定的字符串转换而来的。

码:

Python3

# 用户定义的函数,用于将字符串转换为整数def string_to_int(input_string):
    
  output_int = 0
    
  # 检查数字是否包含任何负号,即它是否为负数。如果它包含在减号的第一个位置,我们将从包含数字的第二个位置开始转换. 
  if input_string[0] == '-' : 
    starting_idx = 1
    check_negative = True
      
  else: 
    starting_idx = 0
    check_negative = False
      
  for i in range(starting_idx, len(input_string)): 
      
    # 计算各个数字的位数 
    place_value = 10**(len(input_string) - (i+1)) 
      
    # 计算数字值ord()函数给出Ascii值 
    digit_value = ord(input_string[i]) - ord('0') 
      
    # 计算最终整数值 
    output_int += place_value * digit_value 
      
  # 如果check_negative为true,则将最终整数值乘以-1
  if check_negative : 
    return -1 * output_int 
  else: 
    return output_int 
  
# 驱动程式码 
if __name__ == "__main__" :  
    
  string = "554"
  
  # 函数调用 
  x = string_to_int(string) 
  
  # 显示数据类型 
  print(type(x)) 
  
  string = "123"
  
  # 显示数据类型 
  print(type(string_to_int(string)))  
  
  string = "-123"
  
  # 显示数据类型 
  print(type(string_to_int(string)))

输出: