Просто разбейте строку на пробел и возьмите первую часть:
int(self.moon.partition(" ")[0])
Вы также можете использовать str.split()
, но разбиение происходит немного быстрее для случая «нужно только один раз».
Подход лучше состоит в том, чтобы не устанавливать атрибут .moons
в строку. Держите его целым числом, нет необходимости заменять его, просто отформатировав красивую строку с информацией:
def physical(Planet):
if Planet.moons == 1:
moons = str(Planet.moons) + " moon"
else:
moons = str(Planet.moons) + " moons"
return (Planet.name + " has a volume of " + volume(Planet) + " cubic km, a surface area of " + surface(Planet) + " sq. km, and " + moons)
Вы можете посмотреть отформатированные строковые литералы или синтаксис строки формата :
def physical(Planet):
moons = f"{Planet.moons} moon"
if Planet.moons != 1:
moons += 's'
return (
f"{Planet.name} has a volume of {volume(Planet)} cubic km, a surface "
f"area of {surface(Planet)} sq. km, and {moons}"
)
В любом случае, используя локальную переменную moons
для хранения отформатированного значения количество лун , вы не изменяете Planet.moons
значение, так что не нужно беспокоиться о том, чтобы вернуться к нему, являющемуся целым числом снова.