1

したがって、IDEでこれを実行すると、ターミナルがポップアップし、何でも入力すると、意図したとおりに出力されますが、ターミナルが閉じます。一種のゲームのようなものを単純に入力し続けるために、同じコードで端末の機能を簡単にリセットできる機能はありますか?

また、「<0」条件を適切に機能させる方法はありますか? それを正しく行うには、文字列を数値に戻す必要があります。

    # Rate our Love!! 
###   Press F5
## then input a rating for our relationship so far
print "Type a rating for our relationship" 
love_rate = raw_input()
### word answers
idk = 'idk'
no = 'no' 
yes = 'yes' 
lol = 'lol'
smh = 'smh'
def love(n):
    if n < 0 : 
        print "Why would it be negative?!" 
    elif n == 'yes' : 
        print " Well if that's the case, then I think we're gonna be just fine." 
    elif n == 'no' : 
        print 'well then... this is awkward'
    elif n == 'lol' : 
        print '''THATS NOT EVEN A NUMBER







        ......sniff'''
    elif n == 'smh' :
        print "I'm kinda mad that's an answer you thought of putting here"      
    ## numbered entries 
    elif n == '0' : 
        print " *gasps profusely* YOU DON'T DESERVE THIS PROGRAM" 
    elif n == '1' :
        print "Wow that is kinda hurtful, not gonna lie" 
    elif n == '2' : 
        print "You make me smile at least once, each and every day"
    elif n == '3' : 
        print"you wouldn't believe how annoying it was to get this program to run properly!" + " Thats all i get?"
    elif n == '4' : 
        print "let's " + "shoot a little higher than that"
    elif n == '5' : 
        print "you're unforgettable, that's what you are" 
    elif n == '6' :
        print "always have, always '____' *hint* fill in the blank " 
    elif n == '7' :
        print "i could never leave you, I love you too much" 
    elif n == '8' : 
        print "an 8/10 is still only a B, maybe I'm not trying hard enough" 
    elif n == '9' : 
        print " well, I'm not perfect yet, could have seen that one coming. Guess I just have to keep trying :)" 
    elif n == '10' : 
        print " i think you're exaggerating, i really am not that good yet"     
    elif n == '11' : 
        print """I can be a little immature sometimes and i'm sorry for that, i promise I can get better though. But i need you. I need you to help me out. Can you do that?""" 
    elif n == '12' : 
        print "I don't think the scale is supposed to go this high" 
    elif n == '13' :
        print "alright now you're pushing it." 
    elif n == '14' : 
        print "alright, THE SCALE GOES UP TO AROUND 10. CEASE" 
    elif n == '15' : 
        print " go up one more number. I DARE YOU"
    elif n == '16' : 
        print " go up one more number. see what happens"
    elif n == '17' : 
        print "one more number" 
    elif n == '18' : 
        print "one more" 
    elif n == '19' : 
        print "STOP" 
    elif n == '92412' : 
        print " I think that is one fantastic answer, can't wait for our anniversary" 
    else:
        print "I still really hope that we could get married someday." 
def reset_print():
    print """ 




Wanna Try Again? :D """ 
love(love_rate)
reset_print()
4

3 に答える 3

1

n < 0機能しない理由raw_inputは、文字列が返され、機能するために int が必要なためです。これは、代わりにn < 0使用したいことを行うために数値が単語よりも大きいかどうかがわからないためです。 elif ステートメントは引用符を外して数値にすることができますinputraw_inputinput

おそらくそれほど長い説明は必要ありませんが、何でも

あなたができることは

n = raw_input("Rate Relationship: ")

if '-' in n:
    print ("Why would it be Negative!?")
于 2013-05-22T06:35:13.077 に答える
1
  1. すべてを関数にラップし、ユーザーの入力に応じて再帰的に呼び出すだけです。

例 - すべてのロジックを 1 つの大規模な関数に含めるのではなく、次の 2 つの関数をプログラムに追加するだけです。

import sys

def main():
    print "Type a rating for our relationship" 
    love_rate = raw_input()
    love(love_rate)
    try_again()

def try_again()    
    print "Want to try again? [y]"
            yes_list = ['yes','y', 'ye', '', yeah]
            no_list = ['no','n']
            # Lower case it to normalise it
            answer = raw_input().lower()
            if answer in yes_list:
               main()
            elif answer in no_list:
               sys.exit(0)
            else:
               sys.stdout.write("Please respond with 'yes' or 'no'")
            try_again()
  1. 文字列を数値に変換して機能させるには、いくつかの方法があります。

    1. 入力を整数に変換するtry,ブロックを追加します。exceptこれは、入力を整数に変換しようとし、変換できない場合はそのままにしておきます。elifただし、ステートメントを変更する必要があることを意味します。そのため、整数と文字列ではなく、整数を比較します。

    2. a を使用しregexて負の整数の存在を検出し、それに応じて変換します。

tryexcept例:

try:
    love_rate = int(love_rate)
except ValueError:
    pass

def love(n):
        if n < 0 : 
            print "Why would it be negative?!" 

        # ....
        # Note the lack of ''
        elif n == 9 : 
            print " well, I'm not perfect yet, could have seen that one coming. Guess I just have to keep trying :)" 

regex例:

import re

negative_integer_regex = re.compile(r'^(-\d+)$')
matching_negative_integer = negative_integer_regex.match(love_rate)
if matching_negative_integer:
    love_rate = int(matching_negative_integer.groups(1))
于 2013-05-22T06:41:41.557 に答える
0

すべてを関数に入れ、スクリプトを終了した後、はいまたはいいえの質問を追加できます。答えが「はい」の場合は、関数を再度呼び出すだけです。

import sys
def myScript():
        # Rate our Love!! 
    ###   Press F5
    ## then input a rating for our relationship so far
    print "Type a rating for our relationship" 
    love_rate = raw_input("Type a rating for our relationship:")
    ### word answers
    idk = 'idk'
    no = 'no' 
    yes = 'yes' 
    lol = 'lol'
    smh = 'smh'
    love(love_rate)

def love(n):
        if n < 0 : 
            print "Why would it be negative?!" 
        elif n == 'yes' : 
            print " Well if that's the case, then I think we're gonna be just fine." 
        elif n == 'no' : 
            print 'well then... this is awkward'
        elif n == 'lol' : 
            print '''THATS NOT EVEN A NUMBER    ......sniff'''
        elif n == 'smh' :
            print "I'm kinda mad that's an answer you thought of putting here"      
        ## numbered entries 
        elif n == '0' : 
            print " *gasps profusely* YOU DON'T DESERVE THIS PROGRAM" 
        elif n == '1' :
            print "Wow that is kinda hurtful, not gonna lie" 
        elif n == '2' : 
            print "You make me smile at least once, each and every day"
        elif n == '3' : 
            print"you wouldn't believe how annoying it was to get this program to run properly!" + " Thats all i get?"
        elif n == '4' : 
            print "let's " + "shoot a little higher than that"
        elif n == '5' : 
            print "you're unforgettable, that's what you are" 
        elif n == '6' :
            print "always have, always '____' *hint* fill in the blank " 
        elif n == '7' :
            print "i could never leave you, I love you too much" 
        elif n == '8' : 
            print "an 8/10 is still only a B, maybe I'm not trying hard enough" 
        elif n == '9' : 
            print " well, I'm not perfect yet, could have seen that one coming. Guess I just have to keep trying :)" 
        elif n == '10' : 
            print " i think you're exaggerating, i really am not that good yet"     
        elif n == '11' : 
            print """I can be a little immature sometimes and i'm sorry for that, i promise I can get better though. But i need you. I need you to help me out. Can you do that?""" 
        elif n == '12' : 
            print "I don't think the scale is supposed to go this high" 
        elif n == '13' :
            print "alright now you're pushing it." 
        elif n == '14' : 
            print "alright, THE SCALE GOES UP TO AROUND 10. CEASE" 
        elif n == '15' : 
            print " go up one more number. I DARE YOU"
        elif n == '16' : 
            print " go up one more number. see what happens"
        elif n == '17' : 
            print "one more number" 
        elif n == '18' : 
            print "one more" 
        elif n == '19' : 
            print "STOP" 
        elif n == '92412' : 
            print " I think that is one fantastic answer, can't wait for our anniversary" 
        else:
            print "I still really hope that we could get married someday." 

        print """Want to try again?"""
        yes = set(['yes','y', 'ye', ''])
        no = set(['no','n'])

        choice = raw_input().lower()
        if choice in yes:
           myScript()
        elif choice in no:
           sys.exit(0)
        else:
           sys.stdout.write("Please respond with 'yes' or 'no'")
        myScript()



myScript()
于 2013-05-22T06:23:45.120 に答える