Chuyển đổi chuỗi thành số âm python

Làm cách nào để chuyển đổi int âm thành một chữ số riêng lẻ trong mảng?

x = -3987

mảng = [-3,9,8,7]

Khi tôi cố gắng làm điều này, tôi gặp lỗi

Giá trịError. chữ không hợp lệ cho int[] với cơ số 10. '-'

x = [int[i] cho i trong str[x]]

vì vậy đây là mã của tôi

  1. đầu vào = mở['DATA1. txt', 'r']
  2. đầu ra = mở['OUT1. txt', 'w']
  3. số = đầu vào. đường đọc []
  4. cho x trong phạm vi[1]
  5. đặt = số[x]
  6. a = float[set[6]]
  7. b = float[set[4]]
  8. c = float[set[2]]
  9. d = float[set[0]]
  10. r = [a - b]**2 + [c - d]**2
  11. câu trả lời = vòng[r * 3. 14169,3]
  12. đầu ra. writelines['%s\n' % câu trả lời]
  13. đầu ra. đóng lại[]

và đây là dữ liệu1. txt có
Vấn đề của tôi là gì nếu tôi thay đổi 1. 312 thành âm 1. 312 nó báo lỗi và cho tôi

  1. Truy nguyên [cuộc gọi gần đây nhất]
  2. Tệp "vòng kết nối. py", dòng 6, trong
  3. a = float[set[6]]
  4. Giá trịError. chuỗi trống cho float[]

It seem to happen to both negative integer and float numbers.

26 Nov '07 #1

1

8671

vì vậy đây là mã của tôi

  1. đầu vào = mở['DATA1. txt', 'r']
  2. đầu ra = mở['OUT1. txt', 'w']
  3. số = đầu vào. đường đọc []
  4. cho x trong phạm vi[1]
  5. đặt = số[x]
  6. a = float[set[6]]
  7. b = float[set[4]]
  8. c = float[set[2]]
  9. d = float[set[0]]
  10. r = [a - b]**2 + [c - d]**2
  11. câu trả lời = vòng[r * 3. 14169,3]
  12. đầu ra. writelines['%s\n' % câu trả lời]
  13. đầu ra. đóng lại[]

và đây là dữ liệu1. txt có
Vấn đề của tôi là gì nếu tôi thay đổi 1. 312 thành âm 1. 312 nó báo lỗi và cho tôi

  1. Truy nguyên [cuộc gọi gần đây nhất]
  2. Tệp "vòng kết nối. py", dòng 6, trong
  3. a = float[set[6]]
  4. Giá trịError. chuỗi trống cho float[]

It seem to happen to both negative integer and float numbers.
Không sử dụng set làm tên biến vì bạn sẽ che dấu hàm set[] tích hợp sẵn của Python. Hãy gọi nó là mục. mục là phần tử đầu tiên trong danh sách một phần tử. Bạn đang cố áp dụng float[] cho dấu trừ vì bạn đang cắt chuỗi "-1. 312 2 3 4". Bạn nên tách chuỗi, sau đó xử lý bốn số trong danh sách kết quả

  1. đầu vào = mở ['dữ liệu. txt', 'r']
  2. đầu ra = mở['đầu ra. txt', 'w']
  3. numberList = đầu vào. đường đọc []
  4. cho mục trong danh sách số
  5. mục = mục. tách ra[]
  6. a = float[items[3]]
  7. b = float[items[2]]
  8. c = float[items[1]]
  9. d = float[items[0]]
  10. r = [a - b]**2 + [c - d]**2
  11. câu trả lời = vòng[r * 3. 14169,3]
  12. đầu ra. writelines['%s\n' % câu trả lời]
  13. đầu ra. đóng lại[]

27 Nov '07 #2

Đăng trả lời của bạn

Đăng nhập để đăng câu trả lời của bạn hoặc Đăng ký một tài khoản miễn phí

Đôi khi, trong khi làm việc với chuỗi dữ liệu Python, chúng ta có thể gặp sự cố trong đó chúng ta cần tách các số nguyên dương và âm trong một chuỗi. Điều này có thể xảy ra ở nhiều miền bao gồm xử lý dữ liệu. Hãy thảo luận về cách nhất định mà chúng ta có thể giải quyết vấn đề này

Xin lỗi vì bản dịch không tốt, tiếng Anh của tôi + google dịch không tốt lắm [nó bằng tiếng Do Thái]

def pad_zeros[binary_as_str, length]:
    subtraction = length - len[binary_as_str]
    return "0" * subtraction + binary_as_str


def binary_addition[binary_as_str1, binary_as_str2]:
    counter , sm_in_string= 0, ""
    if len[binary_as_str1] < len[binary_as_str2]:
        binary_as_str1 = pad_zeros[binary_as_str1, len[binary_as_str2]]
    elif len[binary_as_str2] < len[binary_as_str1]:
        binary_as_str2 = pad_zeros[binary_as_str2, len[binary_as_str1]]
    for i in range[len[binary_as_str1] - 1, - 1, - 1]:
        if binary_as_str1[i] == "1":
            counter += 1
        if binary_as_str2[i] == "1":
            counter += 1
        sm_in_string = str[counter % 2] + sm_in_string
        if counter >= 2:
            counter = 1
        else:
            counter = 0
    if counter % 2 == 1:
        return "1" + sm_in_string
    else:
        return sm_in_string


def round_to_zero[binary_as_str]:
    counter = 0
    second_counter = 0
    for i in range[8, len[binary_as_str] + 1]:
        if len[binary_as_str] < 8:
            return binary_as_str
        else:
            if i % 8 == 0:  # 8
                counter += 8
            else:  # 9, 10, 11
                counter += 1
                second_counter += 1  # 1, 2, 3
    rounded = counter + [8 - second_counter]  # 11
    return rounded


def decimal_to_binary[decimal_num]:
    binary = ""  # It will increase as the loop continues, will increase by "0" or "1".
    counter = decimal_num  # The decimal number will be decreased with each run.
    while counter != 0:  # If it is equal to zero it means the transformation has ended.
        if counter % 2 == 0:
            counter = counter // 2  # Floor division, e.g: 29.5 goes to 29.
            binary = "0" + binary
        else:
            counter = counter // 2  #  Floor division, e.g: 29.5 goes to 29.
            binary = "1" + binary
    if decimal_num == 0:
        binary = "0"
    return binary  # Returns the binary in string after all the process


def twos_compliment[num_dec]:
    str1 = ""
    if num_dec > 0:
        binary_in_string = pad_zeros[decimal_to_binary[num_dec], round_to_zero[decimal_to_binary[num_dec]]] # 1100100
        for i in range[len[binary_in_string]]: # 7-1=6
            if binary_in_string[i] == "0":
                str1 = str1 + "1"
            else:
                str1 = str1 + "0"
        str1 = binary_addition[str1, "1"]
    else:
        decimal = decimal_to_binary[num_dec * [-1]]
        length = round_to_zero[decimal_to_binary[num_dec * [-1]]]
        return pad_zeros[decimal, length]
    return str1



print[twos_compliment[-128]]  # 10000000 - PROBLEM!!
print[twos_compliment[255]]  # 1111111100000001
print[twos_compliment[64]]  # 11000000
#My Tests:
print[twos_compliment[100]]  # 10011100
print[twos_compliment[45]]  # 11010011
print[twos_compliment[-45]]  # 00101101
print[twos_compliment[-168]]  # 0000 0000 1010 1000
print[twos_compliment[-256]]  # 0000000100000000
print[twos_compliment[2500]]  # 1111011000111100
print[twos_compliment[-127]]  # 01111111

Để thực hiện phần bù hai, chúng ta bắt đầu với phần bù hai

Trong phần bù đơn vị, sự khác biệt giữa số dương và số âm là tất cả các bit được đảo lộn. Điều này chỉ hoạt động nếu chúng ta có một số bit cố định

Vì vậy, nếu chúng ta có tám bit, thì số 107 là

01101011  # decimal 107 in binary

và âm 107 lật tất cả các bit

10010100  # decimal -107 in binary ones-complement

Vì vậy, để làm những cái bổ sung, bạn cần phải

  • Quyết định xem bạn đang sử dụng bao nhiêu bit. Bạn cần phải làm điều này đầu tiên

  • Nếu số của bạn bằng 0, thì hệ nhị phân đều là số 0

  • Nếu số dương, hãy tính toán các bit theo cách thông thường. Bit đầu tiên sẽ bằng 0, nếu không thì số của bạn nằm ngoài phạm vi

  • Nếu số âm, hãy tìm ra các bit cho phiên bản dương, sau đó lật các bit

Vì vậy, để tính -107 bằng cách sử dụng tám bit, hãy bắt đầu bằng cách tính 107 ở dạng nhị phân, cần bảy bit 1101011, đệm nó thành tám bit 01101011, sau đó đổi số 0 thành số 1 và số 1 thành số 0 cho kết quả 10010100

Để thực hiện phần bù hai, chúng tôi thực hiện chính xác các bước tương tự, ngoại trừ đối với các giá trị âm, chúng tôi thêm 1 vào cuối

Vì vậy, để tìm ra -107 bằng cách sử dụng tám bit

  • Bỏ qua âm và chuyển đổi 107 thành nhị phân. 1101011

  • Nếu nó sử dụng nhiều hơn bảy bit, số của bạn nằm ngoài phạm vi

  • Pad đến tám bit. 01101011

  • Lật các bit để lấy phần bù. 10010100

  • Và bước bổ sung là thêm một. 10010101

Đừng quên mang theo khi thực hiện phép cộng. Đây là một ví dụ khác. chuyển đổi -13104 thành hai phần bổ sung bằng 16 bit

Int[] có hoạt động trên số âm trong Python không?

Int hoặc số nguyên là một số nguyên, dương hoặc âm, không có phần thập phân, có độ dài không giới hạn .

Làm cách nào để chuyển đổi chuỗi thành dấu phẩy âm?

Sử dụng lớp float[] để chuyển đổi một chuỗi thành số float âm , e. g. kết quả = float [chuỗi]. Lớp float[] trả về một số dấu phẩy động được tạo từ đối số chuỗi hoặc số được cung cấp.

Bạn có thể chuyển đổi chuỗi thành số nguyên Python không?

Để chuyển đổi hoặc ép kiểu chuỗi thành số nguyên trong Python, bạn sử dụng hàm tích hợp int[] . Hàm nhận tham số là chuỗi ban đầu bạn muốn chuyển đổi và trả về số nguyên tương đương với giá trị bạn đã truyền.

Python có thể in số âm không?

In tất cả các số âm bằng vòng lặp for . Xác định giới hạn bắt đầu và kết thúc của phạm vi. Lặp lại từ phạm vi bắt đầu đến phạm vi kết thúc bằng vòng lặp for và kiểm tra xem num có nhỏ hơn 0 không. Nếu điều kiện thỏa mãn thì chỉ in ra số.

Chủ Đề