파이썬 2.7 사용자 입력 받기 및 따옴표없이 문자열로 조작
사용자로부터 문자열을 가져 와서 조작하고 싶습니다.
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
는 방금 파이썬 코드로 읽은 데이터를 평가하므로 실제로 원하는 것은 아닙니다.
일반적인 접근 방식은 (에서 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)
이 문제는 Python 버전 3.4.2에서 해결 된 것으로 보입니다.
testVar = input("Ask user for something.")
잘 작동합니다.
'Programing' 카테고리의 다른 글
자바 스크립트 : 페이지의 모든 DOM 요소를 반복하는 방법은 무엇입니까? (0) | 2020.06.20 |
---|---|
jquery는 클래스와 가장 가까운 이전 형제를 찾습니다. (0) | 2020.06.20 |
github (시간 / 일)의“실제”커밋 날짜 참조 (0) | 2020.06.20 |
py.test 테스트를 실행하도록 PyCharm을 어떻게 구성합니까? (0) | 2020.06.20 |
C # 목록. 내림차순 (0) | 2020.06.20 |