Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更改字符串的总和以使其正常工作?_Python_String_Python 3.x - Fatal编程技术网

Python 如何更改字符串的总和以使其正常工作?

Python 如何更改字符串的总和以使其正常工作?,python,string,python-3.x,Python,String,Python 3.x,这是我正在处理的整个程序(由于代码需要缩进,函数不在正确的位置),但无论如何,有一个问题我不确定如何解决 我如何更改它,使其与我的程序一起工作?它说它是在一个字符串中,但不确定如何更改它,所以它从我的程序的其余部分计算变量。我很抱歉,这似乎不是唯一的问题,我是新来的,只是习惯了它的工作方式 import time import random def welcome(): ready="no" while ready=="no": print("Welcome To Encounter

这是我正在处理的整个程序(由于代码需要缩进,函数不在正确的位置),但无论如何,有一个问题我不确定如何解决

我如何更改它,使其与我的程序一起工作?它说它是在一个字符串中,但不确定如何更改它,所以它从我的程序的其余部分计算变量。我很抱歉,这似乎不是唯一的问题,我是新来的,只是习惯了它的工作方式

import time
import random

def welcome():
ready="no"
while ready=="no":
    print("Welcome To Encounter Simulator Inc. Where We Provide You with combat..")
    print("Readying Start Up Sequence....")
    time.sleep(0.5)
    print("Welcome Are You Ready? Yes or No")
    ready=input(str())
while ready!="yes" and ready!="no":
    print("Yes or No Please")
    ready=input(str())

def name():
areyousure="no"
while areyousure!="yes":
    print("What do you want your 1st character to be named?")
    name=input()
    print("Are You Sure?(yes or no)")
    areyousure=input(str())
if areyousure!="yes" and areyousure!="no":
    print("Yes or No Please")
    areyousure=input(str())
return name

 def name2():
 areyousure2="no"
 while areyousure2!="yes":
     print("What do you want your 2nd character to be named?")
     name2=input()
     print("Are You Sure?(yes or no)")
     areyousure2=input(str())
 if areyousure2!="yes" and areyousure2!="no":
    print("Yes or No Please")
    areyousure2=input(str())
 return name2

 def inputtingfor1(name):
areyousure3="no"
while areyousure3!="yes":
    print("Please Input",name,"'s Attributes..")
    skill1=input("The Skill Attribute= ")
    strength1=input("The Strength Attribute= ")
    print("Are You Sure? (Yes or No)")
    areyousure3=input(str())
return skill1,strength1

def inputtingfor2(name2):
areyousure4="no"
while areyousure4!="yes":
    print("Please Input",name2,"'s Attributes..")
    skill2=input("The Skill Attribute= ")
    strength2=input("The Strength Attribute= ")
    print("Are You Sure (Yes or No)")
    areyousure4=input(str())
return skill2,strength2

def difference1(skill1,skill2):
if skill1 >= skill2:
    result0=skill1-skill2
    result1=result0/5
elif skill1==skill2:
    print("There Will Be No Skill Modifier")
    result1=0
else:
    result0=skill2-skill1
    result1=result0/5
return result1

def difference2(strength1,strength2):
if strength1 >= strength2:
    result10=strength1-strength2
    result2=result10/5
elif strength1==strength52:
    print("There Will Be No Strength Modifier")
    result2=0
else:
    result10=strength2-strength1
    result2=result10/5
return result2

def dicerolling1():
print()
time.sleep(1)
print("This Will Determin Who Gets The Modifiers And Who Loses Them..")
dicenumber1=random.randint(1,6)
print(" The Dice Is Rolling For",name1,)
time.sleep(1)
print("And The Number",name1,"Got Was...",dicenumber1,)
return dicenumber1

def dicerolling2():
print()
time.sleep(1)
print("This Will Determin Who Gets The Modifiers And Who Loses Them..")
dicenumber2=random.randint(1,6)
print(" The Dice Is Rolling For",name2,)
time.sleep(1)
print("And The Number",name2,"Got Was...",dicenumber2,)
return dicenumber2




welcome()
name=name()
name2=name2()
skill1,strength1=inputtingfor1(name)
skill2,strength2=inputtingfor2(name2)
difference1(skill1,skill2)
difference2(strength1,strength2)
dicenumber1=dicerolling1()
dicenumber2=dicerolling2()

当skill1==skill2时,未定义result1

修正:


从原始问题的注释线程来看,问题在于
skill1
skill2
是字符串,不支持
-
操作数。在对它们执行任何数学运算之前,需要将它们强制转换为
int

def difference1(skill1,skill2):
    try:
        s1 = int(skill1)
        s2 = int(skill2)
    except exceptions.ValueError:
        print("Could not cast to int")
        return None

    if s1 >= s2:
        result0 = s1-s2
        result1=result0/5
    elif s1==s2:
        print("There Will Be No Skill Modifier")
        result1 = 0
    else:
        result0=s2-s1
        result1=result0/5
    return result1

根据传递到
差异1
中的内容,可能不会留下整数。如果可以将
skill1
skill2
解析为
浮动
,则在尝试将它们强制转换为
整数
时会遇到异常。如果您知道永远不会出现这种情况,可以删除
try except

你面临的确切问题是什么?错误在哪里,又是什么?请清楚地解释问题。它说不支持opperand作为using-in字符串,但不知道如何修复etcAre
skill1
skill2
字符串?如果是这样的话,你需要把它们转换成数字。哦,是的,谢谢,这可能就是问题所在!请给出1.)至少一个输入到
差异1
,2.)这些示例的
差异1
的预期输出,3.)错误/回溯的副本/粘贴。现在,不清楚你在问什么,确切的错误是什么。我不明白为什么有人投了“-1”:即使这不是唯一的问题,这个问题仍然是一个!int(result0=s1-s2)=>缩进错误,类型错误
def difference1(skill1,skill2):
    try:
        s1 = int(skill1)
        s2 = int(skill2)
    except exceptions.ValueError:
        print("Could not cast to int")
        return None

    if s1 >= s2:
        result0 = s1-s2
        result1=result0/5
    elif s1==s2:
        print("There Will Be No Skill Modifier")
        result1 = 0
    else:
        result0=s2-s1
        result1=result0/5
    return result1