#python
#python
Вопрос:
Я новичок в Python, и мне нужно решить эти две задачи ниже.
Часть 1:
A, B, C = -5, '8', 7.6 # DO NOT MODIFY CONSTANT VALUES
TOTAL = int() # DO NOT MODIFY DATA TYPE
''' PSEUDO CODE
SUM given values of A, B and C as integers, CASTING where necessary.
STORE result in variable 'TOTAL'.
Expected output:
-5 8 7.6 = 10
'''
# TODO: implement your solution for pseudo code!
print("{} {} {} = {}".format(A, B, C, TOTAL)) # DO NOT MODIFY
Вот мое решение, но я не совсем уверен, что это правильный путь, даже если ожидаемый результат правильный:
import math
A, B, C = -5, '8', 7.6 # DO NOT MODIFY CONSTANT VALUES
B = int(B)
SUM = A B C
math.floor(SUM)
TOTAL = int(SUM) # DO NOT MODIFY DATA TYPE
print("{} {} {} = {}".format(A, B, C, TOTAL)) # DO NOT MODIFY
Часть 2:
TEXT = "I wrote my very first program at age 10!" # DO NOT MODIFY CONSTANT VALUES
OUTPUT = str() # DO NOT MODIFY DATA TYPE
''' PSEUDO CODE
DETERMINE whether 'TEXT' contains the value of 'TOTAL' as substring.
IF True STORE "true that" in variable 'OUTPUT' ELSE STORE "nope".
Expected output:
Value of 'TOTAL' exists in string: true that
'''
# TODO: implement your solution for pseudo code!
print("Value of 'TOTAL' exists in string: {}".format(OUTPUT)) # DO NOT MODIFY
Мое (возможно, неправильное) решение:
TEXT = "I wrote my very first program at age 10!" # DO NOT MODIFY CONSTANT VALUES
OUTPUT = str(TEXT[37:39]) # DO NOT MODIFY DATA TYPE
TEXT = int(OUTPUT)
# result = TEXT.find("10")
# print(result)
if TEXT == TOTAL:
OUTPUT = "true that"
else:
OUTPUT = "nope"
print("Value of 'TOTAL' exists in string: {}".format(OUTPUT)) # DO NOT MODIFY
Как вы можете видеть, я не могу найти никаких других решений без изменения типов данных. Это назначение основано на простой арифметике, использующей только базовые операторы. Для реализации не требуется и не разрешено использовать никакие внешние библиотеки.
Реализация второй части назначения кода должна соответствовать представленному псевдокоду, где предполагается сравнение строк (а не числовых значений). Кроме того, ТЕКСТ должен рассматриваться как константа (без изменения значения или его типа данных).
Комментарии:
1. Добро пожаловать в SO. В вашем вопросе много не относящейся к делу информации, и вы на самом деле не подходите к конкретному вопросу, так что есть большая вероятность, что он будет закрыт как «недостаточно сфокусированный». Вероятно, вы обнаружите, что ваше программирование улучшится, если вы будете практиковаться в том, чтобы сводить свои собственные вопросы к единственной вещи, которая вызывает вашу проблему. В данном случае я думаю, что ваш вопрос звучит так: «Как мне проверить, содержит ли строка подстроку в Python?» попробуйте Погуглить это.
2. Кстати, в первом вопросе вы нарушили правила, переназначив B. Честно говоря, это не особенно четко определенная проблема, но моя интерпретация заключается в том, что ваш учитель также ожидает, что код будет работать с любым из A, B или C, являющихся строками. Я подозреваю, что они также ожидают, что каждый из A, B и C будет преобразован в целое число, а затем суммирован. Подсказка: вам не нужна математическая библиотека, нужная вам функция уже есть в предоставленном коде.
Ответ №1:
Отвечаю строго, потому что я считаю, что плакат и другие новые участники на сайте могут быть полезны. Рад удалить мой ответ, если он не подходит.
Для первой проблемы существует множество различных способов выполнения этой же задачи без изменения постоянных значений. Вот пара, которые приходят на ум:
A, B, C = -5, '8', 7.6
TOTAL = int()
for number in [A, B, C]:
if type(number) == int:
TOTAL = number
else:
TOTAL = int(number)
print("{} {} {} = {}".format(A, B, C, TOTAL))
или
A, B, C = -5, '8', 7.6
TOTAL = int()
TOTAL = int(A) int(B) int(C)
print("{} {} {} = {}".format(A, B, C, TOTAL))
или даже
TOTAL = A int(B) int(C)
print("{} {} {} = {}".format(A, B, C, TOTAL))
Проблема со всем этим заключается в том, что они не учитывают случаи, вызывающие исключения, когда A
, B
, или C
не могут быть (временно) преобразованы в тип int . Например, если вместо B = 'eight'
этого этот код вызовет исключение. Предполагается, что это вопрос более низкого уровня с жестко запрограммированными значениями, поэтому нам действительно не нужно беспокоиться о них (на данный момент). Итак, чтобы ответить на этот конкретный вопрос, третий вариант, вероятно, будет лучшим, потому что он отвечает на вопрос и использует приведение только по мере необходимости.
В качестве отступления: я отдаю огромное предпочтение более новому способу форматирования строк из-за удобства чтения, но он работает не для всех версий Python. Для Python 3.6 и выше вы могли бы (возможно, должны) использовать print(f"{A} {B} {C} = {TOTAL}")
К части 2: это продолжение первой проблемы, поэтому мы должны предположить, что переменная TOTAL
уже имеет сохраненное значение (10). Таким образом, мы можем использовать in
для решения этой проблемы довольно легко.
TEXT = "I wrote my first program at age 10!"
OUTPUT = str()
if str(TOTAL) in TEXT:
OUTPUT = "true that"
else:
OUTPUT = "nope"
print("Value of 'TOTAL' exists in string: {}".format(OUTPUT))
Пожалуйста, дайте мне знать, если у вас возникнут какие-либо вопросы о чем-либо здесь, и добро пожаловать в сообщество!
Комментарии:
1. Большое вам спасибо за ваш подробный ответ. Я рад, что вы могли бы дать некоторые разъяснения по этому заданию. Я также знаю о новом способе форматирования строк, но я просто прокомментировал его, так как не уверен, разрешено ли мне его заменить.