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
  1. 将所有内容包装在函数中,并根据用户输入简单地递归调用它们。

示例 - 只需将这两个函数添加到您的程序中,而不是将所有逻辑都包含在一个庞大的函数中:

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. 使用 aregex来检测是否存在负整数,并进行相应的转换。

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 回答
1

n < 0不会工作的原因是因为raw_input返回一个字符串并且n < 0需要一个 int 才能工作,因为你无法判断一个数字是否大于一个单词来做你想要使用的事情,input而不是raw_input因为input会给你一个 int 然后你是elif 语句,您可以去掉引号,使它们成为数字

你可能不需要那么长的解释,但无论如何

你能做的是

n = raw_input("Rate Relationship: ")

if '-' in n:
    print ("Why would it be Negative!?")
于 2013-05-22T06:35:13.077 回答
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 回答