import sys
print(sys.platform)
print(2**100)
raw_input()
Python 3.1 kullanıyorum raw_input
ve dos pop-up "dondurmak" alamıyorum . Okuduğum kitap Python 2.5 için ve Python 3.1 kullanıyorum
Bunu düzeltmek için ne yapmalıyım?
import sys
print(sys.platform)
print(2**100)
raw_input()
Python 3.1 kullanıyorum raw_input
ve dos pop-up "dondurmak" alamıyorum . Okuduğum kitap Python 2.5 için ve Python 3.1 kullanıyorum
Bunu düzeltmek için ne yapmalıyım?
Yanıtlar:
Python 3 ile başlayan raw_input()
, yeniden adlandırıldı input()
.
Gönderen Yenilikler In Python 3.0, Yerleşikleri bölüm ikinci öğe.
input()
ve raw_input()
. a = input()
kullanıcı girişini alır ve doğru tipe koyar. Örn: kullanıcı 5 yazıyorsa, içindeki değer a
tamsayı 5 a = raw_input()
olur. Kullanıcı girişini alır ve bir dize olarak koyar. Örn: kullanıcı 5 yazarsa, içindeki değer a
bir tamsayı değil '5' olur. Benim gibi python yeni başlayanlar için iyi bir bilgi olabilir düşündüm.
Bu Python 3.x ve 2.x sürümlerinde çalışır:
# Fix Python 2.x.
try: input = raw_input
except NameError: pass
print("Hi " + input("Say something: "))
global input
Arama işlevinin üstündeki bir ile düzeltildi .
import __builtin__; input = getattr(__builtin__, 'raw_input', input)
__builtin__
.
__builtin__
yeniden adlandırıldı builtins
. Her ikisi de __builtins__
CPython'da olduğu gibi kullanılabilir .
getattr(__builtins__, 'raw_input', input)
Python 2.7.2'ye aktarıldığında varsayılanı döndürür.
Bunu ele almanın güvenilir bir yolu
from six.moves import input
altı , 2/3 yaygın kod tabanı ağrı noktasının çoğuna yama yapan bir modüldür.
from six.moves import input as raw_input
, raw_input
betiğinizde kalabilir ve her iki Python sürümünü kullanarak da çalıştırabilirsiniz.
Diğerlerinin de belirttiği gibi, raw_input
işlev input
Python 3.0'da yeniden adlandırıldı ve gerçekten daha güncel bir kitapla daha iyi hizmet edersiniz, ancak betiğinizin çıktısını görmenin daha iyi yolları olduğunu belirtmek istiyorum .
Açıklamanızdan, sanırım Windows'u kullanıyorsunuz, bir .py
dosya kaydettiniz ve ardından çalıştırmak için üzerine çift tıklıyorsunuz. Açılan terminal penceresi, programınız biter bitmez kapanır, böylece programınızın sonucunun ne olduğunu göremezsiniz. Bunu çözmek için kitabınız , kullanıcı enter tuşuna basana kadar beklemek için bir raw_input
/ input
ifadesi eklemenizi önerir . Ancak, gördüğünüz gibi, programınızdaki bir hata gibi bir şeyler ters giderse, bu ifade yürütülmez ve neyin yanlış gittiğini görmeden pencere kapanır. Komut istemi veya IDLE kullanmayı daha kolay bulabilirsiniz.
Python programınızı içeren klasör penceresine bakarken, shift tuşunu basılı tutun ve pencerenin beyaz arka plan alanında herhangi bir yere sağ tıklayın. Açılan menüde "Komut penceresini burada aç" girişi bulunmalıdır. (Bunun Windows Vista ve Windows 7'de çalıştığını düşünüyorum.) Bu, şuna benzer bir komut istemi penceresi açacaktır:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Weeble\My Python Program>_
Programınızı çalıştırmak için aşağıdakileri yazın (komut dosyası adınızın yerine):
python myscript.py
... ve enter tuşuna basın. ("Python" tarafından tanınan bir komut olmadığında bir hata alırsanız, bkz. Http://showmedo.com/videotutorials/video?name=960000&fromSeriesID=96 ) Programınız başarıyla tamamlanıp tamamlanmadığına bakıldığında, pencere başka bir komut yazmanız için komut istemi tekrar görünür. Programınızı tekrar çalıştırmak istiyorsanız, girdiğiniz önceki komutu geri çağırmak için yukarı oka, her seferinde dosya adını yazmak yerine tekrar çalıştırmak için enter tuşuna basabilirsiniz.
IDLE, Python ile birlikte gelen basit bir program editörüdür. Diğer özelliklerin yanı sıra programlarınızı bir pencerede çalıştırabilir. .py
Dosyanızı sağ tıklayın ve "IDLE'de Düzenle" yi seçin. Programınız düzenleyicide göründüğünde, F5 tuşuna basın veya "Çalıştır" menüsünden "Modülü çalıştır" ı seçin. Programınız, programınız bittikten sonra açık kalan ve hemen çalıştırmak için Python komutlarını girebileceğiniz bir pencerede çalışır.
pythonw -m idlelib.idle
Timmerman'ın çözümü kodu çalıştırırken harika çalışıyor, ancak Undefined name
pyflakes veya benzer bir linter kullanırken hata almak istemiyorsanız bunun yerine aşağıdakileri kullanabilirsiniz:
try:
import __builtin__
input = getattr(__builtin__, 'raw_input')
except (ImportError, AttributeError):
pass
Redefining built-in 'input' (redefined-builtin)
, Unable to import '__builtin__' (import-error)
, Invalid constant name "input" (invalid-name)
.
flake8
veya pyflakes
öylesine olmasın olarak anlamsız uyarılar ile tüm gün sürebilir.
Scriptlerime koyduğum, py2 / 3-agnostik ortamda çalıştırmak istemediğim bir kod parçası:
# Thank you, python2-3 team, for making such a fantastic mess with
# input/raw_input :-)
real_raw_input = vars(__builtins__).get('raw_input',input)
Şimdi real_raw_input kullanabilirsiniz. Oldukça pahalı ama kısa ve okunabilir. Ham girdiyi kullanmak genellikle zaman pahalıdır (girişi beklemektedir), bu yüzden önemli değildir.
Teoride, real_raw_input yerine raw_input bile atayabilirsiniz, ancak raw_input varlığını kontrol eden ve buna göre davranan modüller olabilir. Güvenli tarafta kalmak daha iyi.
Muhtemelen en iyi çözüm değil, ama buraya gelmeden önce, çalışmadan hızlı bir mola vermeden çalışmaya devam etmek için bunu hemen yaptım.
def raw_input(x):
input(x)
Sonra raw_input('Enter your first name: ')
üzerinde çalıştığım senaryoyu çalıştırdığımda olduğu gibi yakalar input()
.
Bunu yapmamam için bir neden olabilir, henüz karşılaşmadım!
raw_input = input
?