【发布时间】:2019-08-15 14:01:26
【问题描述】:
所以我正在尝试用 python 制作一个聊天机器人。在线 ide(repl.it) 是我用来从任何地方运行代码的工具。它的圈复杂度限制为 15。我想在不超过限制的情况下制作非常复杂的东西,这可能吗?
import random
greeting = ["Hello!","Hi!","Hey!","Hello my name is IFuture!","How may I help you?"]
farewell = ["Bye","Bye bye","See you soon","Don't forget about me!","See you next time","See you"]
catchthat = ["I didn't catch that.","Sorry, I couldn't understand what you said.","Could you say that again?","Could you type in english?"]
notnice = ["That wasn't nice.","Next time try to say that nicer.","Try being nice.","You have more friends when you are nice."]
def run():
global greeting,farewell,catchthat
userinputa = str(input(">>>")).lower()
userinput = userinputa.split()
if "hello" in userinput or "hey" in userinput or "hi" in userinput:
print(random.choice(greeting))
elif "swear1" in userinput or "swear2" in userinput or "swear3" in userinput or "swear4" in userinput or "swear6" in userinput:
if "you" in userinput:
print(random.choice(swear back)
else:
#print(random.choice(notnice))
print("swear back")
elif "what" in userinput:
if "can" in userinput:
if "you" in userinput:
if "do" in userinput:
print("Try ?help or anything I am made to do.")
elif "is" in userinput:
try:
num1 = int(userinput[2])
num2 = int(userinput[4])
conversion = str(userinput[3])
if conversion in ["add","plus","addition","sum","+"]:
print(num1+num2)
elif conversion in ["times","multiply","*","x"]:
print(num1*num2)
elif conversion in ["divide","/"]:
print(num1/num2)
except:
print("Try using spaces for example 5*5 would be 5 * 5.")
else:
print(random.choice(catchthat))
while True:
run()
对不起,我的代码效率极低。
【问题讨论】:
-
在这个网站lizard.ws你有你的圈复杂度19
-
它是否让您免费运行和托管您的代码?
-
尝试将
run方法拆分为更小的方法。 -
这行你想要什么:print(random.choice(swear back)。代码不起作用
-
基本上,我无法得到可以向用户发誓的字符串——因为我不想被审核
标签: python cyclomatic-complexity