>
import random as rand
import string
string.letters='rps'
comp = rand.choice(string.letters)
user = input("enter r for rock,p for paper,s for scissors\n")
print(comp)
if comp==user:
    print("its a tie")
elif comp==r and user==p:
    print("  congrats you  won ")
elif comp==r and user==s:
    print("sorry you lost")
elif comp==p and user==r:
    print("sorry you lost") 
elif comp==p and user==s:
    print("  congrats you  won ")
elif comp==s and user==p:
    print("sorry you lost")
elif comp==s and user==r:
    print("  congrats you  won ")

그리고 출력에서 ​​다음과 같은 오류가 발생합니다 :

enter r for rock,p for paper,s for scissors
s
r
Traceback (most recent call last):
   File "rpcs.py", line 12, in <module>
    elif comp==r and user==p:
NameError: name 'r' is not defined

어떤 도움이라도 감사합니다

  • 답변 # 1

    r 와 같은 것을 대체하십시오   'r' 와 함께 . 파이썬은 r 를 읽고 있습니다   r 라는 변수로 작성했습니다. , 문자열로 취급하고 있습니다. p 와 동일한 작업 s 등 ...

  • 답변 # 2

    다음과 같이 시도해보십시오 :

    import random as rand
    import string
    string.letters='rps'
    comp = rand.choice(string.letters)
    user = input("enter r for rock,p for paper,s for scissors\n")
    print(comp)
    if comp==user:
        print("its a tie")
    elif comp == 'r' and user == 'p':
        print("  congrats you  won ")
    elif comp == 'r' and user == 's':
        print("sorry you lost")
    elif comp == 'p' and user == 'r':
        print("sorry you lost") 
    elif comp == 'p' and user == 's':
        print("congrats you  won")
    elif comp == 's' and user == 'p':
        print("sorry you lost")
    elif comp == 's' and user == 'r':
       print("congrats you  won")
    
    

    설명 : 문자는 quotes 와 함께 사용해야합니다. . 그렇지 않으면 파이썬은 변수로 사용합니다. 따옴표가 사용되지 않으므로 오류 NameError: name 'r' is not defined 가 발생했습니다.

  • 답변 # 3

    조건부 테스트를 수행 할 때 문자열을 입력하지 않기 때문에 작동하지 않습니다. 다음은 샘플 예입니다.

    import random
    strings = ['r', 'p', 's']
    computer = strings[random.randint(0, 2)]
    user_choice = input("enter r for rock,p for paper,s for scissors:\n")
    if computer==user_choice:
        print("its a tie")
    elif computer == 'r' and user_choice == 'p':
        print("  congrats you  won ")
    elif computer == 'r' and user_choice == 's':
        print("sorry you lost")
    elif computer == 'p' and user_choice== 'r':
        print("sorry you lost") 
    elif computer == 'p' and user_choice == 's':
        print("  congrats you  won ")
    elif computer == 's' and user_choice == 'p':
        print("sorry you lost")
    elif computer == 's' and user_choice == 'r':
        print("  congrats you  won ")
    else:
        print('Error')
    
    

    각 조건부 테스트에서 비교할 값을 문자열로 입력합니다. 문자열 객체가 아닌 경우이 예제에서 비교할 수 없습니다. 단순히 p, r 또는 s를 배치해도 작동하지 않지만 따옴표로 묶어야합니다. 그렇지 않으면, 역 추적 오류가 발생합니다.

관련 자료

  • 이전 파일 복사 프로그램에서 EOF에 도달하지 않고 Enter 키를 눌러 출력하는 이유는 다음과 같습니다"THE C PROGRAMMING LANGUGE BY DENNIS RITCHIE"
  • 다음 sql server - 일시 중단 된 sql 삽입 - 커밋되지 않은 쿼리 나 분할 된 쿼리를 읽습니까?