답변:
raw_input()
대신에 사용하십시오 input()
:
testVar = raw_input("Ask user for something.")
input()
실제로 입력을 파이썬 코드로 평가합니다. 절대 사용하지 않는 것이 좋습니다. raw_input()
사용자가 입력 한 그대로의 문자열을 반환합니다.
input
지금은 사라 raw_input을이 방식으로 작동합니다.
input()
유용한 기능 이라고 생각 하지 않으며 사용하지 않는 것이 좋습니다.
이 함수 input
는 방금 파이썬 코드로 읽은 데이터를 평가하므로 실제로 원하는 것은 아닙니다.
일반적인 접근 방식은 사용자 입력 (from sys.stdin
)을 다른 파일과 같이 처리하는 것 입니다. 시험
import sys
sys.stdin.readline()
짧게 유지 하려면 평가 raw_input
와 동일 input
하지만 생략하는 것을 사용할 수 있습니다 .
readline
이는 bash와 유사한 기능을 제공합니다 (역사적으로 사용 가능하며 자동 완성에는 약간의 노력이 필요합니다)
raw_input()
Python 2의 input()
함수와 Python 3 의 함수를 사용할 수 있습니다. 기본적으로 입력 함수는 문자열 형식의 입력을받습니다. 다른 데이터 유형의 경우 사용자 입력을 캐스트해야합니다.
파이썬 2에서는 raw_input()
함수를 사용합니다 . 사용자가 입력을 누르고 기다릴 때까지 기다렸다가 return
원하는 데이터 형식으로 캐스팅하여 값을 변수에 저장해야합니다. 타입 캐스팅을 사용할 때주의하십시오
x = raw_input("Enter a number: ") #String input
x = int(raw_input("Enter a number: ")) #integer input
x = float(raw_input("Enter a float number: ")) #float input
x = eval(raw_input("Enter a float number: ")) #eval input
파이썬 3에서는 사용자 입력 값을 반환하는 input () 함수를 사용합니다.
x = input("Enter a number: ") #String input
문자열, int, float, eval을 입력하면 문자열 입력으로 사용됩니다
x = int(input("Enter a number: ")) #integer input
int cast에 문자열을 입력하면 ValueError: invalid literal for int() with base 10:
x = float(input("Enter a float number: ")) #float input
플로트 캐스트 용 문자열을 입력하면 ValueError: could not convert string to float
x = eval(input("Enter a float number: ")) #eval input
eval cast에 문자열을 입력하면 NameError: name ' ' is not defined
해당 오류는 Python 2에도 적용됩니다.
수정 사항이있는 내 작업 코드 :
import random
import math
print "Welcome to Sam's Math Test"
num1= random.randint(1, 10)
num2= random.randint(1, 10)
num3= random.randint(1, 10)
list=[num1, num2, num3]
maxNum= max(list)
minNum= min(list)
sqrtOne= math.sqrt(num1)
correct= False
while(correct == False):
guess1= input("Which number is the highest? "+ str(list) + ": ")
if maxNum == guess1:
print("Correct!")
correct = True
else:
print("Incorrect, try again")
correct= False
while(correct == False):
guess2= input("Which number is the lowest? " + str(list) +": ")
if minNum == guess2:
print("Correct!")
correct = True
else:
print("Incorrect, try again")
correct= False
while(correct == False):
guess3= raw_input("Is the square root of " + str(num1) + " greater than or equal to 2? (y/n): ")
if sqrtOne >= 2.0 and str(guess3) == "y":
print("Correct!")
correct = True
elif sqrtOne < 2.0 and str(guess3) == "n":
print("Correct!")
correct = True
else:
print("Incorrect, try again")
print("Thanks for playing!")
이 문제는 Python 버전 3.4.2에서 해결 된 것으로 보입니다.
testVar = input("Ask user for something.")
잘 작동합니다.
input
는 Python 2.x와 같습니다 raw_input
( docs.python.org/3.0/whatsnew/3.0.html#builtins 참조 ). 이것은 2.x와 관련된 문제입니다.
input
자동 호출eval()