Python sürümlerinin listesi


36

Python, günümüzde en hızlı büyüyen ana programlama dilidir. Üst üste üçüncü yıl için en çok aranan dil, yani henüz kullanmayan geliştiricilerin öğrenmek istediklerini söylüyorlar. [1]

Python'un popülaritesinin nedeni birçok versiyonudur. [kaynak belirtilmeli] Aslında iki geliştirme sürümü de dahil olmak üzere 116 sürüm Python var.

Göreviniz, istediğiniz sırada ve istediğiniz formatta tüm Python sürümlerinin bir listesini çıkarmak / yazdırmaktır. Bu bilgilerin saklandığı yerleşik işlevleri kullanamazsınız.

Sen çıktı biçimini seçmekte özgürdür, ama her versiyon standart yolda tanımlanmalıdır: 1.1, 2.3.0, 2.7.10ve bu kadar.

Virgülle ayrılmış Python sürümlerinin tam listesi 2 , aşağıda gösterilmiştir:

1.1, 1.2, 1.3, 1.4, 1.5, 1.5.1, 1.5.2, 1.6, 2.0, 2.0.1, 2.1, 2.1.1, 2.1.2, 2.1.3, 2.2, 2.2.1, 2.2.2, 2.2.3, 2.3, 2.3.1, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.4, 2.4.1, 2.4.2, 2.4.3, 2.4.4, 2.5, 2.5.1, 2.5.2, 2.5.3, 2.5.4, 2.6, 2.6.1, 2.6.2, 2.6.3, 2.6.4, 2.6.5, 2.6.6, 2.6.7, 2.6.8, 2.6.9, 2.7, 2.7.1, 2.7.2, 2.7.3, 2.7.4, 2.7.5, 2.7.6, 2.7.7, 2.7.8, 2.7.9, 2.7.10, 2.7.11, 2.7.12, 2.7.13, 2.7.14, 2.7.15, 2.7.16, 3.0, 3.0.1, 3.1, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.2 , 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6, 3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.3.4, 3.3.5, 3.3.6, 3.3.7, 3.4.0, 3.4.1, 3.4.2, 3.4.3, 3.4.4, 3.4.5, 3.4.6, 3.4.7, 3.4.8, 3.4.9, 3.4.10, 3.5.0, 3.5.1, 3.5.2, 3.5.3, 3.5.4, 3.5.5, 3.5.6, 3.5.7, 3.6.0, 3.6.1, 3.6.2, 3.6.3, 3.6.4, 3.6.5, 3.6.6, 3.6.7, 3.6.8, 3.7.0, 3.7.1, 3.7.2, 3.7.3

veya büyük sürümlere göre:

1.1
1.2
1.3
1.4
1.5, 1.5.1, 1.5.2
1.6
2.0, 2.0.1
2.1, 2.1.1, 2.1.2, 2.1.3
2.2, 2.2.1, 2.2.2, 2.2.3
2.3, 2.3.1, 2.3.2, 2.3.3, 2.3.4, 2.3.5
2.4, 2.4.1, 2.4.2, 2.4.3, 2.4.4
2.5, 2.5.1, 2.5.2, 2.5.3, 2.5.4
2.6, 2.6.1, 2.6.2, 2.6.3, 2.6.4, 2.6.5, 2.6.6, 2.6.7, 2.6.8, 2.6.9
2.7, 2.7.1, 2.7.2, 2.7.3, 2.7.4, 2.7.5, 2.7.6, 2.7.7, 2.7.8, 2.7.9, 2.7.10, 2.7.11, 2.7.12, 2.7.13, 2.7.14, 2.7.15, 2.7.16
3.0, 3.0.1
3.1, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5
3.2, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6
3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.3.4, 3.3.5, 3.3.6, 3.3.7
3.4.0, 3.4.1, 3.4.2, 3.4.3, 3.4.4, 3.4.5, 3.4.6, 3.4.7, 3.4.8, 3.4.9, 3.4.10 
3.5.0, 3.5.1, 3.5.2, 3.5.3, 3.5.4, 3.5.5, 3.5.6, 3.5.7
3.6.0, 3.6.1, 3.6.2, 3.6.3, 3.6.4, 3.6.5, 3.6.6, 3.6.7, 3.6.8
3.7.0, 3.7.1, 3.7.2, 3.7.3

Buradaki zorluk, sabit bir ve çıktı formatının isteğe bağlı olması haricinde bir çok yakındır .

2 Liste, burada ve burada , resmi Python web sitesinden alınmıştır . 0.9.0.. 0.9.9ve 1.5.1p1. Gibi eklenmemiş bazı sürümler var . Dahil olmayan sürümleri bulsanız bile, yukarıdaki listeyi kullanmanız gerekir. Resmi listelerde kalmaya karar verdim, aksi halde birisi muhtemelen bir 2.1.0.1.2versiyonunu bulabilirdi .


2
Biz çıkışa izin verilmez sanırım 1.1.0yerine (tüm sürümlerini 3 sayı yapmak) 1.1?
Kevin Cruijssen

2
Doğru tahmin edersin @Kevin. İzin vermeyi düşündüm ama bunun yerine resmi isimlerle gittim.
Stewie Griffin

Yanıtlar:


17

JavaScript (ES6),  128 125  124 bayt

@ OlivierGrégoire sayesinde 1 bayt kaydedildi

Her sürümü ayrı bir satıra gönderir. En yüksekden en düşük ana versiyona ve en düşükten en yüksek revizyona sipariş edilir.

f=(r=v=28)=>v?r<parseInt('0111131000244655ah002678b8940'[v],36)?(1+v/10).toFixed(1)+(r|v>22?'.'+r:'')+`
`+f(r+1):f(+!v--):''

Çevrimiçi deneyin!

Nasıl?

v[0..27]

  • v/10+1
  • vmod10

Revizyon, değişkeninde gerçekleştirilir . Maksimum değeri bağlıdır ve Baz-36 kodlanan bir arama tablosunda saklanır. Bu tablodaki herhangi bir , bu sürümün hiç yayınlanmadığı anlamına gelir.r0rv0

Ayrıca, revizyonun olduğunda bile dahil edilip edilmeyeceğini bilmek için testini kullanıyoruz (Python 3.3.0 ile başlayarak).v>220


5

C # (Visual C # Etkileşimli Derleyici) , 109 bayt

for(int j,k=1;;k++)for(j=@" [SOH][SOH][SOH][SOH][ETX][SOH][NUL][NUL][NUL][STX][EOT][EOT][ACK][ENQ][ENQ]
[DC1][NUL][NUL][STX][ACK][BEL][BS][VT][BS][TAB][EOT]"[k];j-->0;)Print($"{k*.1+1:N1}"+(j<1&k<17?"":"."+j));

Kodları parantez içinde gösterilen birçok yazdırılamaz. Bu tam bir programdır. Boş baytlar \0TIO bağlantısında s ile değiştirilir , çünkü cihazım bunları kopyalayıp yapıştıramaz.

@OlivierGregoire sayesinde bir bayt kurtarıldı.

Çevrimiçi deneyin! (Boş baytları yerleştirmek için @OlivierGregoire sayesinde)

açıklama

Dizideki her karakter, ana konumda kaç tane küçük sürüm olduğunu gösterir. Örneğin, index 5 ( ETX) ' deki karakter üç ASCII değerine 1.5.xsahiptir ve üç küçük versiyona sahip ana sürüme karşılık gelir . Program, mevcut karakterin ascii değerini alır ve birçok kez tekrar eder ve küçük sürümleri bir sonraki ana sürüme geçmeden önce yazdırır.

Bazı sürümlerde, sonraki sürümlerde boşluklar vardır. Bunu düzeltmek için, dize null bayt içerir, böylece program bunlarla karşılaştığında sıfır kez döngüye girer.

Yazdırılamayan dize bu karakter değerlerini içerir:

1,1,1,1,3,1,0,0,0,2,4,4,6,5,5,10,17,0,0,2,6,7,8,11,8,9,4

j="..."[k];j-->0;Özellikle siparişin önemi olmadığı için kısaltılabilir . Ayrıca, TIO (115 bayt) ve giriş (110 bayt) arasındaki boyut farkını açıklayabilir misiniz?
Olivier Grégoire

\ 0 olarak temsil tio @ OlivierGrégoire muhtemelen beş boş bayt
Sefa

@Sefa evet, muhtemelen ... Ama kesinliği rica ediyorum.
Olivier Grégoire

@ OlivierGrégoire Sefa'nın söylediği gibi, boş baytları kopyalayamıyorum. Eğer \0ler boş bayt değiştirildi, bu 110 byte olacaktır
Cehalet Düzenleme

1
Sonra, buradasın, bir bayt TIO'su
Olivier Grégoire

4

Pyth, 52 bayt

.emj\.+W|d>k18,h/k8%k8dbxLG"abbbbdbaceegffkrcghilije

Burada çevrimiçi deneyin .

Çıktı, ana ve küçük sürümlere göre gruplandırılmış elemanları olan iç içe geçmiş bir listedir. Çıktının başında boş bir liste ve daha sonra bir tane daha var 1.6. Tam çıktı aşağıdaki gibidir:

[[], ['1.1'], ['1.2'], ['1.3'], ['1.4'], ['1.5', '1.5.1', '1.5.2'], ['1.6'], [], ['2.0', '2.0.1'], ['2.1', '2.1.1', '2.1.2', '2.1.3'], ['2.2', '2.2.1', '2.2.2', '2.2.3'], ['2.3', '2.3.1', '2.3.2', '2.3.3', '2.3.4', '2.3.5'], ['2.4', '2.4.1', '2.4.2', '2.4.3', '2.4.4'], ['2.5', '2.5.1', '2.5.2', '2.5.3', '2.5.4'], ['2.6', '2.6.1', '2.6.2', '2.6.3', '2.6.4', '2.6.5', '2.6.6', '2.6.7', '2.6.8', '2.6.9'], ['2.7', '2.7.1', '2.7.2', '2.7.3', '2.7.4', '2.7.5', '2.7.6', '2.7.7', '2.7.8', '2.7.9', '2.7.10', '2.7.11', '2.7.12', '2.7.13', '2.7.14', '2.7.15', '2.7.16'], ['3.0', '3.0.1'], ['3.1', '3.1.1', '3.1.2', '3.1.3', '3.1.4', '3.1.5'], ['3.2', '3.2.1', '3.2.2', '3.2.3', '3.2.4', '3.2.5', '3.2.6'], ['3.3.0', '3.3.1', '3.3.2', '3.3.3', '3.3.4', '3.3.5', '3.3.6', '3.3.7'], ['3.4.0', '3.4.1', '3.4.2', '3.4.3', '3.4.4', '3.4.5', '3.4.6', '3.4.7', '3.4.8', '3.4.9', '3.4.10'], ['3.5.0', '3.5.1', '3.5.2', '3.5.3', '3.5.4', '3.5.5', '3.5.6', '3.5.7'], ['3.6.0', '3.6.1', '3.6.2', '3.6.3', '3.6.4', '3.6.5', '3.6.6', '3.6.7', '3.6.8'], ['3.7.0', '3.7.1', '3.7.2', '3.7.3']]

Bu kabul edilebilir değilse .n, kodu 2 bayt pahasına düzleştirilmiş bir liste olarak çıktısını almak için hazırlayın.


4

Java (JDK) , 134 bayt

v->{for(int a=0,b;;)for(b="0111131000244655:A002678;894".charAt(++a)-48;b-->0;)System.out.printf("%.1f%s ",a*.1+1,b<1&a<23?"":"."+b);}

Çevrimiçi deneyin!

Sürümler en yüksekten en alta doğru yazdırılır.

Kredi


1
(a>1|b>0)&c<a.valueOf(y,36)olabilir a>1|b>0&&c<a.valueOf(y,36)ve c<1&(a<3|b<3)?olabilir c<1&&a<3|b<3?2 bayt kaydedin. İlgili Java ipucu - bölüm Parantez kullanmak yerine bitli ve mantıklı kontrollerin birleştirilmesi
Kevin Cruijssen

@KevinCruijssen Teşekkürler, ancak önerileriniz artık alakasız olacak kadar çok değişiklik yaptım ... Önerinizi artık kullanmadığım için, sizi nasıl kredilendireceğimi bilmiyorum:
Olivier Grégoire

1
Np, bunun yerine yeni bir golf önereceğim;) /10dolabilir*.1
Kevin Cruijssen

1
int a=28-> int a=1, ve for döngüsündeki koşulu kaldırın, ardından a++3 bayttan tasarruf etmek için bir ekleyin . TIO
Cehalet


3

Retina , 105 bayt


11* 111131   244655TS  2678E894
L$`.
$&_$.`
T
10
E
11
S
17
.+_
*
Lv$`_+(.)(.)
$1.$2.$.%`
,16`(...)\.0
$1

Çevrimiçi deneyin! Gevşek bir şekilde @ Arnauld'un çözümüne dayanıyor. Açıklama:


11* 111131   244655TS  2678E894

Verilen karakterlerden sonra 11 boşluktan oluşan bir dize yerleştirin.

L$`.
$&_$.`

Her karakter için, a _ve sütun numaralarıyla sonlandırılmışları listeleyin .

T
10
E
11
S
17

Üç harfi sayısal değerlere dönüştürün.

.+_
*

Sayısal değerleri unary'e dönüştürün.

Lv$`_+(.)(.)
$1.$2.$.%`

Verilen değere kadar olan her bir değer için, büyük ve küçük harf sayılarını sütun numaralarından ayıklayarak, sürüm numarasının soneki olarak kullanın.

,16`(...)\.0
$1

Biri olan ilk 16 sürüm için sıfır sonekini silin.


2

Jöle , 51 bayt

+⁵D;ⱮḶ}j€”.
“øṄƇịɱ⁽Ɱj>⁶7,Ẉ¢’b18Ė0ị$Ƈç/€ḣ3$€1¦€17R¤¦

Çevrimiçi deneyin!

.Ana versiyona göre gruplandırılmış ayrılmış tam sayı listelerinin bir listesini çıkaran bir niladik bağlantı . TIO'da bunları güzelce basmak için bazı altbilgi kodları var.


0

33 , 484 bayt

"1."es[lz1azpois4m]"1.5"pi"1.5."z1apoiapoi"1.6"pi"2.0"pip".1"pizcz"2.1"''pie"."e''es[lz1azpois3m]"2.2"''pie"."et''es[lz1azpois3m]"2.3"''pie"."et''es[lz1azpois5m]"2.4"''pie"."et''es[lz1azpois4m]"2.5"''pie"."et''es[lz1azpois4m]"2.6"''pie"."et''es[lz1azpois9m]"2.7"''pie"."et''es[lz1azpois16m]"3.0"pip".1"pi"3.1"''pie"."et''es[lz1azpois5m]"3.2"''pie"."et''es[lz1azpois6m]"3.3."''es[lzpoi1azs8m]"3.4."''es[lzpoi1azs11m]"3.5."''es[lzpoi1azs8m]"3.6."''es[lzpoi1azs9m]"3.7."''es[lzpoi1azs4m]

Bunu beynimde * ck tarzı bir dilde kullanmak istedim.

Yeni satırlarla sınırlandırılan, meydan okuma için gereken her python sürümünü yazdırır.

İşte küçük bir açıklama.

[lz1azpois4m] | Imitates a for loop starting at 1
[  1az    4m] | For i in range 1 through 4
      p       | - Print the string declared previously (1.5., 3.4., etc.)
       o      | - Print the current value of i
        i     | - Print a newline

[lzpoi1azs8m] | Imitates a for loop starting at 0
[     1az 8m] | For i in range 0 through 7
   poi        | Print the version
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.