2014-10-28 3 views
-1

Мне сложно рассчитать часть моей программы в Python.Расчеты в python

import random 
CharacterOne= input("Enter the First players name:") 
CharacterTwo= input("Enter the Second players name:") 
ch1str=int(input(CharacterOne+" has a strength of:")) 
ch1skl=int(input(CharacterOne+" has a skill of:")) 
ch2str=int(input(CharacterTwo+" has a strength of:")) 
ch2skl=int(input(CharacterTwo+" has a skill of:")) 
strdif=int(ch1str-ch2str) 
if strdif<0: 
    strdif=ch2str-ch1str 
strmod=strdif//5 
skldif=int(ch1skl-ch2skl) 
if skldif<0: 
    skldif=ch2skl-ch1skl 
sklmod=skldif//5 

num1=random.randrange(1,6) 
num2=random.randrange(1,6) 
if num1>num2: 
    ch1str+=strmod 
    ch1skl+=sklmod 
    ch2str-=strmod 
    ch2skl-=sklmod 
    play1 = True 
if num2>num1: 
    ch2str+=strmod 
    ch2skl+=sklmod 
    ch1str-=strmod 
    ch1skl-=sklmod 
    play1 = False 
if ch1skl<0: 
    ch1skl=0 
if ch2skl<0: 
    ch2skl=0 
if ch1str=0: 
    print(CharacterOne+" is now dead") 
if ch2str=0: 
    print(CharacterTwo+" is now dead") 
if play1==True: 
    print(CharacterOne+" won this round, now has",ch1str,"strength and",ch1skl,"skill") 
    print(CharacterTwo+" lost this round, now has",ch2str,"strength and",ch2skl,"skill") 
if play1==False: 
    print(CharacterTwo+" won this round, now has",ch2str,"strength and",ch2skl,"skill") 
    print(CharacterOne+" lost this round, now has",ch1str,"strength and",ch1skl,"skill") 

Это код, по какой-то причине, когда я вхожу в себе силы и умения для обоих персонажей программа печатает то, что я вошел и оленья кожа на самом деле вычислить новую силу и мастерство, используя НТР и скл мод и МПИ.

+0

Вы уверены, что 'strmod' и' sklmod' больше 0? 'ch1str + = strmod' ничего не сделает, если' strmod' равно нулю. – Kevin

+0

Кроме того, у вас есть условие, в котором вы берете два случайных числа и сравниваете их. Вы не учитывали случай, когда два случайных числа одинаковы. В этом случае никаких изменений не будет. Вы также создали сценарий, в котором «CharacterOne теперь мертв» или «CharacterTwo теперь мертв» никогда не будет отображаться. Вы устанавливаете ch1str и ch2str равным нулю перед проверкой, находятся ли они ниже нуля. Зачем ты это делаешь? – Tadgh

+0

Итак, как бы я выбрал два новых номера, если они получится одинаковыми? Могу ли я сделать другое заявление if? – Pikachu101

ответ

0

Здесь много чего происходит, и я не уверен, что вы понимаете, что на самом деле делает ваша логика. В этом случае, независимо от силы или мастерства любого игрока, победитель раунда определяется случайным числом. Кроме того, ознакомьтесь с инструкциями else и elif для условных выражений.

import random 
import math 
CharacterOne= input("Enter the First players name:") 
CharacterTwo= input("Enter the Second players name:") 
ch1str=int(input(CharacterOne+" has a strength of:")) 
ch1skl=int(input(CharacterOne+" has a skill of:")) 
ch2str=int(input(CharacterTwo+" has a strength of:")) 
ch2skl=int(input(CharacterTwo+" has a skill of:")) 

#you dont need to cast to int here, your vars are already ints. Also, you can use the absolute value to avoid the extra conditional. 
strdif = abs(ch1str-ch2str) 
strmod = strdif//5 

skldif = abs(ch1skl-ch2skl) 
sklmod = skldif//5 

num1=random.randrange(1,6) 

if num1>=3: 
    ch1str+=strmod 
    ch1skl+=sklmod 
    ch2str-=strmod 
    ch2skl-=sklmod 
    play1 = True 
else: 
    ch2str+=strmod 
    ch2skl+=sklmod 
    ch1str-=strmod 
    ch1skl-=sklmod 
    play1 = False 
#no idea what you're doing here. Do we care if their stats are in the negative? Why not just compare to <0? 
#if ch1skl<0: 
# ch1skl=0 
#if ch2skl<0: 
# ch2skl=0 
#if ch1str<0: 
# ch1str=0 
#if ch2str<0: 
# ch2str=0 

if ch1str<0: 
    print(CharacterOne+" is now dead") 
if ch2str<0: 
    print(CharacterTwo+" is now dead") 

#Do you want the winner to be determined randomly? Currently your stats have no effect on the winner 
if play1==True: 
    print(CharacterOne+" won this round, now has",ch1str,"strength and",ch1skl,"skill") 
    print(CharacterTwo+" lost this round, now has",ch2str,"strength and",ch2skl,"skill") 
else: 
    print(CharacterTwo+" won this round, now has",ch2str,"strength and",ch2skl,"skill") 
    print(CharacterOne+" lost this round, now has",ch1str,"strength and",ch1skl,"skill") 
+0

Введите имя первого игрока: Tom Введите имя второго игрока: Victor У Тома есть сила of: 21 У Тома есть навык: 18 У Виктора есть сила: 17 У Виктора есть навык: 15 Том выиграл этот раунд, теперь имеет 21 силу и 18 умений Виктор проиграл этот раунд, теперь имеет 17 силы и 15 умений – Pikachu101

+0

, что было результатом – Pikachu101

+0

Вы понимаете, почему? (21 - 18) // 5 равно 0. Вот почему ничего не меняется. Ваш strmod и skillmod равны 0. – Tadgh