programing

Python 2.7은 사용자 입력을 받고 인용문 없이 문자열로 조작합니다.

lovejava 2023. 7. 23. 13:55

Python 2.7은 사용자 입력을 받고 인용문 없이 문자열로 조작합니다.

저는 사용자로부터 문자열을 받아서 그것을 조작하고 싶습니다.

testVar = input("Ask user for something.")

사용자가 응답을 따옴표로 입력하지 않고 testVar가 문자열이 될 수 있는 방법이 있습니까? 예: "안녕하세요" vs.안녕하세요.

사용자가 Hello를 입력하면 다음 오류가 발생합니다.

NameError: 'Hello' 이름이 정의되지 않았습니다.

사용하다raw_input()대신에input():

testVar = raw_input("Ask user for something.")

input()실제로 입력을 Python 코드로 평가합니다.절대 사용하지 말 것을 제안합니다.raw_input()사용자가 입력한 동사형 문자열을 반환합니다.

함수input또한 방금 읽은 데이터를 파이썬 코드로 평가합니다. 이는 실제로 원하는 것이 아닙니다.

일반적인 접근 방식은 사용자 입력을 처리하는 것입니다.sys.stdin다른 파일과 마찬가지로 사용해 보십시오.

import sys
sys.stdin.readline()

짧게 유지하고 싶다면, 당신은 사용할 수 있습니다.raw_input와 같은 것input평가를 생략합니다.

우리는 사용할 수 있습니다.raw_input()Python 2 및 에서 기능합니다.input()Python 3에서 기능합니다.기본적으로 입력 함수는 문자열 형식의 입력을 받습니다.다른 데이터 유형의 경우 사용자 입력을 캐스트해야 합니다.

Python 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

Python 3에서는 사용자 입력 값을 반환하는 input() 함수를 사용합니다.

x = input("Enter a number: ") #String input

문자열, int, float, eval을 입력하면 문자열 입력으로 사용됩니다.

x = int(input("Enter a number: ")) #integer input

삽입할 문자열을 입력하는 경우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

평가 캐스트를 위한 문자열을 입력하는 경우NameError: name ' ' is not defined이러한 오류는 Python 2에도 적용됩니다.

만약 당신이 python 2.x에서 raw_input 대신 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.")

잘 될 겁니다.

언급URL : https://stackoverflow.com/questions/4960208/python-2-7-getting-user-input-and-manipulating-as-string-without-quotations