Hướng dẫn how do you enter a decimal range in python? - làm thế nào để bạn nhập một phạm vi thập phân trong python?

Thay vì sử dụng một bước thập phân trực tiếp, việc thể hiện điều này sẽ an toàn hơn nhiều về số lượng bạn muốn. Nếu không, lỗi làm tròn điểm nổi có khả năng cho bạn một kết quả sai.

Sử dụng chức năng

xs = [x * 0.1 for x in range[0, 10]]
for x in xs:
    print[x]
6 từ thư viện Numpy [không phải là một phần của thư viện tiêu chuẩn nhưng tương đối dễ dàng để có được].
xs = [x * 0.1 for x in range[0, 10]]
for x in xs:
    print[x]
6 mất một số điểm để quay lại và cũng cho phép bạn chỉ định có bao gồm điểm cuối bên phải hay không:

>>> np.linspace[0,1,11]
array[[ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ]]
>>> np.linspace[0,1,10,endpoint=False]
array[[ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9]]

Nếu bạn thực sự muốn sử dụng giá trị bước nổi, hãy sử dụng

xs = [x * 0.1 for x in range[0, 10]]
for x in xs:
    print[x]
8:

>>> import numpy as np
>>> np.arange[0.0, 1.0, 0.1]
array[[ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9]]

Mặc dù vậy, lỗi làm tròn điểm nổi sẽ gây ra vấn đề. Dưới đây là một trường hợp đơn giản trong đó lỗi làm tròn khiến

xs = [x * 0.1 for x in range[0, 10]]
for x in xs:
    print[x]
9 tạo ra mảng chiều dài 4 khi nó chỉ tạo ra 3 số:

>>> numpy.arange[1, 1.3, 0.1]
array[[1. , 1.1, 1.2, 1.3]]

Mateen Ulhaq

22.3K16 Huy hiệu vàng86 Huy hiệu bạc127 Huy hiệu đồng16 gold badges86 silver badges127 bronze badges

Đã trả lời ngày 25 tháng 1 năm 2009 lúc 12:26Jan 25, 2009 at 12:26

Andrew Jaffandrew JaffeAndrew Jaffe

25,9K4 Huy hiệu vàng49 Huy hiệu bạc59 Huy hiệu Đồng4 gold badges49 silver badges59 bronze badges

8

>>> def drange[start, stop, step]:
...     r = start
...     while r < stop:
...         yield r
...         r += step
...         
>>> i0=drange[0.0, 1.0, 0.1]
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>> 
0 chỉ có thể làm số nguyên, không phải điểm nổi.

Thay vào đó, hãy sử dụng danh sách hiểu biết để có được danh sách các bước:

[x * 0.1 for x in range[0, 10]]

Tổng quát hơn, sự hiểu biết của trình tạo giảm thiểu phân bổ bộ nhớ:

xs = [x * 0.1 for x in range[0, 10]]
for x in xs:
    print[x]

Mateen Ulhaq

22.3K16 Huy hiệu vàng86 Huy hiệu bạc127 Huy hiệu đồng16 gold badges86 silver badges127 bronze badges

Đã trả lời ngày 25 tháng 1 năm 2009 lúc 12:26Jan 25, 2009 at 10:35

8

Andrew Jaffandrew Jaffe

>>> def drange[start, stop, step]:
...     r = start
...     while r < stop:
...         yield r
...         r += step
...         
>>> i0=drange[0.0, 1.0, 0.1]
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>> 

25,9K4 Huy hiệu vàng49 Huy hiệu bạc59 Huy hiệu ĐồngJan 25, 2009 at 11:57

>>> def drange[start, stop, step]:
...     r = start
...     while r < stop:
...         yield r
...         r += step
...         
>>> i0=drange[0.0, 1.0, 0.1]
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>> 
0 chỉ có thể làm số nguyên, không phải điểm nổi.gimel

Thay vào đó, hãy sử dụng danh sách hiểu biết để có được danh sách các bước:10 gold badges74 silver badges104 bronze badges

6

Tổng quát hơn, sự hiểu biết của trình tạo giảm thiểu phân bổ bộ nhớ:

for i * 100 in range[0, 100, 10]:
    print i / 100.0

Đã trả lời ngày 25 tháng 1 năm 2009 lúc 10:35

for i in range[0, 11, 1]:
    print i / 10.0

Xây dựng trên 'Xrange [[bắt đầu], dừng [, bước]]', bạn có thể xác định một trình tạo chấp nhận và tạo bất kỳ loại nào bạn chọn [bám vào các loại hỗ trợ

>>> def drange[start, stop, step]:
...     r = start
...     while r < stop:
...         yield r
...         r += step
...         
>>> i0=drange[0.0, 1.0, 0.1]
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>> 
1 và
>>> def drange[start, stop, step]:
...     r = start
...     while r < stop:
...         yield r
...         r += step
...         
>>> i0=drange[0.0, 1.0, 0.1]
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>> 
2]:

Đã trả lời ngày 25 tháng 1 năm 2009 lúc 11:57Jan 25, 2009 at 10:32

Gimelgimelcmsjr

80.4K10 Huy hiệu vàng74 Huy hiệu bạc104 Huy hiệu đồng10 gold badges70 silver badges62 bronze badges

3

Tăng cường độ của

>>> def drange[start, stop, step]:
...     r = start
...     while r < stop:
...         yield r
...         r += step
...         
>>> i0=drange[0.0, 1.0, 0.1]
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>> 
3 cho vòng lặp và sau đó giảm nó khi bạn cần.

[p/10 for p in range[0, 10]]
[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]

Chỉnh sửa: Thành thật tôi không thể nhớ tại sao tôi nghĩ rằng điều đó sẽ hoạt động một cách cú pháp

x=100
y=2
[p/x for p in range[0, int[x*y]]]
[0.0, 0.01, 0.02, 0.03, ..., 1.97, 1.98, 1.99]

Nên có đầu ra mong muốn.

Đã trả lời ngày 25 tháng 1 năm 2009 lúc 10:32Feb 28, 2017 at 2:06

CMSJRCMSJRKalle

54.5K10 Huy hiệu vàng70 Huy hiệu bạc62 Huy hiệu Đồng7 gold badges61 silver badges76 bronze badges

1

Numpy là một chút quá mức cần thiết, tôi nghĩ vậy.

for i * 100 in range[0, 100, 10]:
    print i / 100.0
0

Nói chung, để làm một bước-____ 54 lên đến

>>> def drange[start, stop, step]:
...     r = start
...     while r < stop:
...         yield r
...         r += step
...         
>>> i0=drange[0.0, 1.0, 0.1]
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>> 
5 bạn sẽ làmMay 17, 2014 at 20:50

1

[

>>> def drange[start, stop, step]:
...     r = start
...     while r < stop:
...         yield r
...         r += step
...         
>>> i0=drange[0.0, 1.0, 0.1]
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>> 
4 tạo ra tiếng ồn làm tròn ít hơn khi tôi thử nghiệm].

>>> import numpy as np
>>> np.arange[0.0, 1.0, 0.1]
array[[ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9]]
0

Đã trả lời ngày 28 tháng 2 năm 2017 lúc 2:06

>>> import numpy as np
>>> np.arange[0.0, 1.0, 0.1]
array[[ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9]]
1

Kallekalle

>>> import numpy as np
>>> np.arange[0.0, 1.0, 0.1]
array[[ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9]]
2

13.1K7 Huy hiệu vàng61 Huy hiệu bạc76 Huy hiệu đồng

>>> import numpy as np
>>> np.arange[0.0, 1.0, 0.1]
array[[ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9]]
3

>>> def drange[start, stop, step]:
...     r = start
...     while r < stop:
...         yield r
...         r += step
...         
>>> i0=drange[0.0, 1.0, 0.1]
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>> 
7 có chức năng tích hợp
xs = [x * 0.1 for x in range[0, 10]]
for x in xs:
    print[x]
9, khái quát hóa hàm tạo
>>> def drange[start, stop, step]:
...     r = start
...     while r < stop:
...         yield r
...         r += step
...         
>>> i0=drange[0.0, 1.0, 0.1]
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>> 
0 của Python để đáp ứng yêu cầu xử lý phao của bạn.

>>> import numpy as np
>>> np.arange[0.0, 1.0, 0.1]
array[[ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9]]
4

Đã trả lời ngày 17 tháng 5 năm 2014 lúc 20:50

Tương tự như hàm

for i * 100 in range[0, 100, 10]:
    print i / 100.0
1 của R, mô hình này trả về một chuỗi theo bất kỳ thứ tự nào với giá trị bước chính xác. Giá trị cuối cùng bằng với giá trị dừng.Jun 11, 2012 at 19:10

Kết quảzeferino

[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]1 gold badge5 silver badges11 bronze badges

4

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

[10, 8, 6, 4, 2, 0]

>>> import numpy as np
>>> np.arange[0.0, 1.0, 0.1]
array[[ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9]]
5

[1]

Đã trả lời ngày 25 tháng 1 năm 2009 lúc 11:57Jan 25, 2009 at 10:32

GimelgimelDana

80.4K10 Huy hiệu vàng74 Huy hiệu bạc104 Huy hiệu đồng17 gold badges62 silver badges72 bronze badges

1

Tăng cường độ của

>>> def drange[start, stop, step]:
...     r = start
...     while r < stop:
...         yield r
...         r += step
...         
>>> i0=drange[0.0, 1.0, 0.1]
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>> 
3 cho vòng lặp và sau đó giảm nó khi bạn cần.

>>> import numpy as np
>>> np.arange[0.0, 1.0, 0.1]
array[[ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9]]
6

Chỉnh sửa: Thành thật tôi không thể nhớ tại sao tôi nghĩ rằng điều đó sẽ hoạt động một cách cú pháp

>>> import numpy as np
>>> np.arange[0.0, 1.0, 0.1]
array[[ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9]]
7

Nên có đầu ra mong muốn.Nov 8, 2012 at 10:00

Đã trả lời ngày 25 tháng 1 năm 2009 lúc 10:32Pramod

CMSJRCMSJR3 gold badges43 silver badges43 bronze badges

1

>>> import numpy as np
>>> np.arange[0.0, 1.0, 0.1]
array[[ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9]]
8

54.5K10 Huy hiệu vàng70 Huy hiệu bạc62 Huy hiệu Đồng

Numpy là một chút quá mức cần thiết, tôi nghĩ vậy.

Nói chung, để làm một bước-____ 54 lên đến

>>> def drange[start, stop, step]:
...     r = start
...     while r < stop:
...         yield r
...         r += step
...         
>>> i0=drange[0.0, 1.0, 0.1]
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>> 
5 bạn sẽ làm

>>> import numpy as np
>>> np.arange[0.0, 1.0, 0.1]
array[[ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9]]
9

[

>>> def drange[start, stop, step]:
...     r = start
...     while r < stop:
...         yield r
...         r += step
...         
>>> i0=drange[0.0, 1.0, 0.1]
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>> 
4 tạo ra tiếng ồn làm tròn ít hơn khi tôi thử nghiệm].

Đã trả lời ngày 28 tháng 2 năm 2017 lúc 2:06

Kallekalle

13.1K7 Huy hiệu vàng61 Huy hiệu bạc76 Huy hiệu đồng5 gold badges31 silver badges52 bronze badges

>>> def drange[start, stop, step]:
...     r = start
...     while r < stop:
...         yield r
...         r += step
...         
>>> i0=drange[0.0, 1.0, 0.1]
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>> 
7 có chức năng tích hợp
xs = [x * 0.1 for x in range[0, 10]]
for x in xs:
    print[x]
9, khái quát hóa hàm tạo
>>> def drange[start, stop, step]:
...     r = start
...     while r < stop:
...         yield r
...         r += step
...         
>>> i0=drange[0.0, 1.0, 0.1]
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>> 
0 của Python để đáp ứng yêu cầu xử lý phao của bạn.May 13, 2012 at 23:20

Đã trả lời ngày 17 tháng 5 năm 2014 lúc 20:50Nik

Tương tự như hàm

for i * 100 in range[0, 100, 10]:
    print i / 100.0
1 của R, mô hình này trả về một chuỗi theo bất kỳ thứ tự nào với giá trị bước chính xác. Giá trị cuối cùng bằng với giá trị dừng.1 silver badge3 bronze badges

0

>>> numpy.arange[1, 1.3, 0.1]
array[[1. , 1.1, 1.2, 1.3]]
0

Kết quả

[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]9 gold badges38 silver badges48 bronze badges

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]Sep 7, 2012 at 2:01

[10, 8, 6, 4, 2, 0]Raja

[1]1 silver badge2 bronze badges

1

Đã trả lời ngày 11 tháng 6 năm 2012 lúc 19:10no rounding error

>>> numpy.arange[1, 1.3, 0.1]
array[[1. , 1.1, 1.2, 1.3]]
1

Zeferinozeferino

>>> numpy.arange[1, 1.3, 0.1]
array[[1. , 1.1, 1.2, 1.3]]
2

5001 huy hiệu vàng5 huy hiệu bạc11 huy hiệu đồng
For example:

>>> numpy.arange[1, 1.3, 0.1]
array[[1. , 1.1, 1.2, 1.3]]
3

Hàm tích hợp phạm vi [] trả về một chuỗi các giá trị số nguyên, tôi sợ, vì vậy bạn không thể sử dụng nó để thực hiện một bước thập phân.

Tôi muốn nói chỉ sử dụng một vòng lặp trong thời gian:27 gold badges249 silver badges297 bronze badges

Nếu bạn tò mò, Python đang chuyển đổi 0,1 thành 0 của bạn, đó là lý do tại sao nó cho bạn biết đối số không thể bằng không.Dec 10, 2016 at 19:03

DanadanaJason

31.1K17 Huy hiệu vàng62 Huy hiệu bạc72 Huy hiệu đồng22 silver badges18 bronze badges

Đây là một giải pháp sử dụng itertools:

>>> numpy.arange[1, 1.3, 0.1]
array[[1. , 1.1, 1.2, 1.3]]
4

Ví dụ sử dụng:Jan 25, 2009 at 10:48

Đã trả lời ngày 8 tháng 11 năm 2012 lúc 10:00RSabet

Pramodpramod3 gold badges26 silver badges26 bronze badges

5.0303 Huy hiệu vàng43 Huy hiệu bạc43 Huy hiệu Đồng

>>> numpy.arange[1, 1.3, 0.1]
array[[1. , 1.1, 1.2, 1.3]]
5

Trong Python 2.7x cho bạn kết quả của:

>>> numpy.arange[1, 1.3, 0.1]
array[[1. , 1.1, 1.2, 1.3]]
6

[0.0, 0.1, 0.2, 0.300000000000004, 0.4, 0.5, 0.60000000000001, 0.7000000000000001, 0.8, 0.9]

Nhưng nếu bạn sử dụng:Feb 9, 2018 at 0:31

cung cấp cho bạn mong muốn:pylang

[0,0, 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9]11 gold badges121 silver badges112 bronze badges

Liam Mcinroy

Nó phù hợp với kết quả tập hợp trống như trong phạm vi/xrange.

Chỉ chuyển một giá trị số duy nhất cho một trong hai hàm sẽ trả lại đầu ra phạm vi tiêu chuẩn cho giá trị trần số nguyên của tham số đầu vào [vì vậy nếu bạn cho nó 5.5, nó sẽ trả về phạm vi [6].]

Chỉnh sửa: Mã bên dưới hiện có sẵn dưới dạng gói trên PYPI: Franges

>>> numpy.arange[1, 1.3, 0.1]
array[[1. , 1.1, 1.2, 1.3]]
7

Đã trả lời ngày 12 tháng 12 năm 2012 lúc 22:29Dec 12, 2012 at 22:29

Nisan.HNisan.HNisan.H

5,8022 Huy hiệu vàng22 Huy hiệu bạc25 Huy hiệu Đồng2 gold badges22 silver badges25 bronze badges

2

Rất nhiều giải pháp ở đây vẫn có lỗi điểm nổi trong Python 3.6 và không làm chính xác những gì cá nhân tôi cần.

Chức năng bên dưới lấy số nguyên hoặc phao, không yêu cầu nhập khẩu và không trả lại lỗi điểm nổi.

>>> numpy.arange[1, 1.3, 0.1]
array[[1. , 1.1, 1.2, 1.3]]
8

Đã trả lời ngày 5 tháng 2 năm 2019 lúc 18:49Feb 5, 2019 at 18:49

kowpowkowpowkowpow

851 Huy hiệu bạc8 Huy hiệu đồng1 silver badge8 bronze badges

3

Không có ai đã đề cập đến giải pháp được đề xuất trong tài liệu Python 3:

Xem thêm:

  • Công thức Linspace cho thấy cách thực hiện một phiên bản lười biếng của phạm vi phù hợp cho các ứng dụng điểm nổi.

Sau khi được xác định, công thức rất dễ sử dụng và không yêu cầu

for i in range[0, 11, 1]:
    print i / 10.0
0 hoặc bất kỳ thư viện bên ngoài nào khác, nhưng các chức năng như
for i in range[0, 11, 1]:
    print i / 10.0
1. Lưu ý rằng thay vì đối số
for i in range[0, 11, 1]:
    print i / 10.0
2, đối số
for i in range[0, 11, 1]:
    print i / 10.0
3 thứ ba chỉ định số lượng giá trị mong muốn, ví dụ:

>>> numpy.arange[1, 1.3, 0.1]
array[[1. , 1.1, 1.2, 1.3]]
9

Tôi trích dẫn một phiên bản sửa đổi của công thức Python 3 đầy đủ từ Andrew Barnert bên dưới:

[x * 0.1 for x in range[0, 10]]
0

Đã trả lời ngày 2 tháng 3 năm 2018 lúc 15:00Mar 2, 2018 at 15:00

Chris_RandsChris_RandsChris_Rands

36,5K13 Huy hiệu vàng79 Huy hiệu bạc110 Huy hiệu đồng13 gold badges79 silver badges110 bronze badges

Đây là giải pháp của tôi để có được phạm vi với các bước nổi. Sử dụng chức năng này, không cần thiết phải nhập Numpy, cũng không cài đặt nó. Tôi khá chắc chắn rằng nó có thể được cải thiện và tối ưu hóa. Hãy thoải mái làm điều đó và đăng nó ở đây.
Using this function it's not necessary to import numpy, nor install it.
I'm pretty sure that it could be improved and optimized. Feel free to do it and post it here.

[x * 0.1 for x in range[0, 10]]
1

Đầu ra là:

[x * 0.1 for x in range[0, 10]]
2

Đã trả lời ngày 12 tháng 12 năm 2013 lúc 17:04Dec 12, 2013 at 17:04

Carlos Vegacarlos VegaCarlos Vega

1.3312 Huy hiệu vàng13 Huy hiệu bạc35 Huy hiệu Đồng2 gold badges13 silver badges35 bronze badges

3

Để hoàn thiện cửa hàng, một giải pháp chức năng:

[x * 0.1 for x in range[0, 10]]
3

Đã trả lời ngày 12 tháng 9 năm 2015 lúc 7:44Sep 12, 2015 at 7:44

Bijou Trouvaillebijou TrouvailleBijou Trouvaille

8.1764 Huy hiệu vàng38 Huy hiệu bạc42 Huy hiệu đồng4 gold badges38 silver badges42 bronze badges

Bạn có thể sử dụng chức năng này:

[x * 0.1 for x in range[0, 10]]
4

Đã trả lời ngày 25 tháng 6 năm 2010 lúc 17:57Jun 25, 2010 at 17:57

3

Nó có thể được thực hiện bằng thư viện Numpy. Hàm Arange [] cho phép các bước trong phao. Nhưng, nó trả về một mảng numpy có thể được chuyển đổi thành danh sách bằng cách sử dụng Tolist [] để thuận tiện cho chúng ta.

[x * 0.1 for x in range[0, 10]]
5

Đã trả lời ngày 12 tháng 2 năm 2016 lúc 12:18Feb 12, 2016 at 12:18

Bắt đầu và dừng là bao gồm thay vì cái này hay cái kia [thường là dừng được loại trừ] và không nhập khẩu, và sử dụng máy phát điện

[x * 0.1 for x in range[0, 10]]
6

Python 3.6.2 [v3.6.2: 5FD33B5, ngày 8 tháng 7 năm 2017, 04:57:36] [MSC V.1900 64 bit [AMD64]]

Đã trả lời ngày 1 tháng 3 năm 2018 lúc 21:53Mar 1, 2018 at 21:53

Goran B.Goran B.Goran B.

5444 Huy hiệu bạc13 Huy hiệu đồng4 silver badges13 bronze badges

Tôi biết tôi đến muộn bữa tiệc ở đây, nhưng đây là một giải pháp máy phát điện tầm thường hoạt động trong 3.6:

[x * 0.1 for x in range[0, 10]]
7

Sau đó, bạn có thể gọi nó giống như bản gốc ____ 50 ... không có xử lý lỗi, nhưng hãy cho tôi biết nếu có lỗi có thể bị bắt một cách hợp lý và tôi sẽ cập nhật. Hoặc bạn có thể cập nhật nó. Đây là Stackoverflow.

Đã trả lời ngày 2 tháng 1 năm 2019 lúc 21:07Jan 2, 2019 at 21:07

1

Để chống lại các vấn đề về độ chính xác nổi, bạn có thể sử dụng mô -đun

for i * 100 in range[0, 100, 10]:
    print i / 100.0
8.

Điều này đòi hỏi thêm một nỗ lực chuyển đổi sang

for i * 100 in range[0, 100, 10]:
    print i / 100.0
8 từ
for i in range[0, 11, 1]:
    print i / 10.0
7 hoặc
for i in range[0, 11, 1]:
    print i / 10.0
8 trong khi viết mã, nhưng thay vào đó bạn có thể vượt qua
for i in range[0, 11, 1]:
    print i / 10.0
9 và sửa đổi chức năng nếu loại thuận tiện đó thực sự cần thiết.

[x * 0.1 for x in range[0, 10]]
8

Đầu ra mẫu -

[x * 0.1 for x in range[0, 10]]
9

Đã trả lời ngày 4 tháng 3 năm 2018 lúc 13:05Mar 4, 2018 at 13:05

shad0w_wa1k3rshad0w_wa1k3rshad0w_wa1k3r

12.6k8 Huy hiệu vàng65 Huy hiệu bạc88 Huy hiệu Đồng8 gold badges65 silver badges88 bronze badges

5

Thêm tự động sửa cho khả năng của một dấu hiệu không chính xác trên bước:

xs = [x * 0.1 for x in range[0, 10]]
for x in xs:
    print[x]
0

Đã trả lời ngày 1 tháng 12 năm 2010 lúc 6:36Dec 1, 2010 at 6:36

Giải pháp của tôi:

xs = [x * 0.1 for x in range[0, 10]]
for x in xs:
    print[x]
1

Đã trả lời ngày 25 tháng 7 năm 2012 lúc 13:50Jul 25, 2012 at 13:50

Dưới đây là giải pháp của tôi hoạt động tốt với float_range [-1, 0, 0,01] và hoạt động mà không có lỗi biểu diễn điểm nổi. Nó không nhanh lắm, nhưng hoạt động tốt:

xs = [x * 0.1 for x in range[0, 10]]
for x in xs:
    print[x]
2

Đã trả lời ngày 8 tháng 1 năm 2013 lúc 21:21Jan 8, 2013 at 21:21

Pymenpymenpymen

4.92540 Huy hiệu bạc33 Huy hiệu đồng40 silver badges33 bronze badges

Tôi chỉ là người mới bắt đầu, nhưng tôi có cùng một vấn đề, khi mô phỏng một số tính toán. Đây là cách tôi đã cố gắng giải quyết vấn đề này, dường như đang làm việc với các bước thập phân.

Tôi cũng khá lười biếng và vì vậy tôi thấy khó có thể viết chức năng phạm vi của riêng mình.

Về cơ bản, những gì tôi đã làm là đã thay đổi

[p/10 for p in range[0, 10]]
[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
0 của tôi thành
[p/10 for p in range[0, 10]]
[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
1 và sử dụng bộ phận này bằng
[p/10 for p in range[0, 10]]
[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
2 bên trong vòng lặp. Tôi cũng lo ngại, nếu sẽ có những sai lầm làm tròn. Vì vậy, tôi quyết định kiểm tra, cho dù có bất kỳ. Bây giờ tôi đã nghe, rằng nếu ví dụ
[p/10 for p in range[0, 10]]
[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
3 từ tính toán không chính xác là phao
[p/10 for p in range[0, 10]]
[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
3 so sánh chúng sẽ trả về sai [nếu tôi sai, xin vui lòng cho tôi biết].

Vì vậy, tôi đã quyết định kiểm tra xem giải pháp của tôi có hoạt động cho phạm vi của mình hay không bằng cách chạy thử nghiệm ngắn:

xs = [x * 0.1 for x in range[0, 10]]
for x in xs:
    print[x]
3

Và nó được in đúng cho mỗi.

Bây giờ, nếu tôi hoàn toàn sai, xin vui lòng cho tôi biết.

Đã trả lời ngày 10 tháng 10 năm 2013 lúc 22:27Oct 10, 2013 at 22:27

Bí quyết để tránh vấn đề vòng tròn là sử dụng một số riêng để di chuyển qua phạm vi, bắt đầu và một nửa bước trước khi bắt đầu.

xs = [x * 0.1 for x in range[0, 10]]
for x in xs:
    print[x]
4

Ngoài ra,

xs = [x * 0.1 for x in range[0, 10]]
for x in xs:
    print[x]
8 có thể được sử dụng.

Đã trả lời ngày 2 tháng 9 năm 2015 lúc 7:28Sep 2, 2015 at 7:28

wolfram77wolfram77wolfram77

2.5713 huy hiệu vàng20 Huy hiệu bạc28 Huy hiệu đồng3 gold badges20 silver badges28 bronze badges

Câu trả lời của tôi tương tự như những người khác sử dụng Map [], mà không cần phải numpy và không sử dụng Lambda [mặc dù bạn có thể].Để có được danh sách các giá trị nổi từ 0,0 đến T_MAX trong các bước của DT:

xs = [x * 0.1 for x in range[0, 10]]
for x in xs:
    print[x]
5

Đã trả lời ngày 16 tháng 2 năm 2017 lúc 19:48Feb 16, 2017 at 19:48

Phạm vi có thể là số thập phân?

Phạm vi: Loại câu hỏi của phạm vi phạm vi có thể thu thập cả giá trị số nguyên và thập phân.can collect both integer and decimal values.

Bài Viết Liên Quan

Chủ Đề