사용자로부터 문자열을 가져 와서 조작하고 싶습니다.
testVar = input("Ask user for something.")
사용자가 따옴표로 응답을 입력하지 않고도 testVar가 문자열이되는 방법이 있습니까? 즉 “Hello”vs. Hello
사용자가 Hello를 입력하면 다음 오류가 발생합니다.
NameError : 이름 ‘Hello’가 정의되지 않았습니다
답변
raw_input()
대신에 사용하십시오 input()
:
testVar = raw_input("Ask user for something.")
input()
실제로 입력을 파이썬 코드로 평가합니다. 절대 사용하지 않는 것이 좋습니다. raw_input()
사용자가 입력 한 그대로의 문자열을 반환합니다.
답변
이 함수 input
는 방금 파이썬 코드로 읽은 데이터를 평가하므로 실제로 원하는 것은 아닙니다.
일반적인 접근 방식은 사용자 입력 (from sys.stdin
)을 다른 파일과 같이 처리하는 것 입니다. 시험
import sys
sys.stdin.readline()
짧게 유지 하려면 평가 raw_input
와 동일 input
하지만 생략하는 것을 사용할 수 있습니다 .
답변
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에도 적용됩니다.
답변
파이썬 2.x에서 raw_input 대신 입력을 사용하려면이 트릭이 유용합니다.
if hasattr(__builtins__, 'raw_input'):
input=raw_input
그 후
testVar = input("Ask user for something.")
잘 작동합니다.
답변
testVar = raw_input("Ask user for something.")
답변
수정 사항이있는 내 작업 코드 :
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!")
답변
나중에 파이썬 3으로 옮겨야 할 경우를 대비하여 안전하지 못한 문제가 해결되었습니다.
def _input(msg):
return raw_input(msg)