Я очень новичок в кодировании (началось 2 дня назад), и для практики друг дал мне задание написать программу, которая предоставляет либо n-е число Фибоначчи, либо последовательность до n-й точки.Я успешно выполнил эту задачу с помощью input () и напрямую запросил у пользователя n, теперь он расширил задачу и попросил меня попробовать получить те же результаты, используя sys.argv
После широкого использования Google я понял,как распечатать все заданные аргументы и сосчитать их, но я не могу придумать, как использовать эти аргументы в функции.К сожалению, я также не могу найти правильные ключевые слова для Google, в результате чего я немного застрял в ничейной стране.
Вот моя последняя попытка:
import sys
from math import sqrt
print('Number of arguments:', len(sys.argv), 'arguments.')
print ('Argument List:', str(sys.argv))
Fibonacci = sys.argv[0]
value = sys.argv[1]
sequence = sys.argv[2]
def fib(value): int(1/sqrt(5)*(((1+sqrt(5))/2)**value-(((1-sqrt(5))/2)**value)))
print("The {}. value is".format(value), fib(value))
input("Close")
(Мелкая деталь,хотя это и неважно: я перевел строки с немецкого на английский, и поэтому вместо «{} st / nd / rd / th» вместо «{} st / nd / rd / th» говорится, что различие между этими случаями является проблемой на более поздний срок.)
Теперь я ожидаю, что буду далеко от цели, но использование некоторых выражений, которые работали для моего кода на основе input (), является почти последней идеей, которую я имею сейчас.Кто-нибудь может дать мне указатель на то, как я могу действовать здесь?Даже намек на то, что я должен гуглить, помог бы, но на данный момент у меня совершенно нет идей.
РЕДАКТИРОВАТЬ: Я не знаю, если это то, что вы должны делать, но я 'Я решил мою проблему, и я подумал, что я мог бы также опубликовать свой код на случай, если кто-то еще наткнется на эту тему с похожим вопросом.Вот мое решение.
import sys
from math import sqrt
Fibonacci = sys.argv[0]
Entscheidung = (sys.argv[1])
n = int(sys.argv[2])
sequence = []
if Entscheidung == "Stelle":
def fib(n): return int(1/sqrt(5)*(((1+sqrt(5))/2)**n-((1-sqrt(5))/2)**n))
print("Die {}. Stelle beträgt:{}".format(n, fib(n)))
elif Entscheidung == "Folge":
def fib(n): return int(1/sqrt(5)*(((1+sqrt(5))/2)**n-((1-sqrt(5))/2)**n))
for i in range(n):
sequence.append(fib(i + 1))
print('[%s]' % ', '.join(map(str, sequence)))
input("Schließen")
Обратите внимание, что я все еще абсолютный новичок, и это решение может быть неэффективным, плохо написанным, запутанно отформатированным, я бы не знал.Все, что я могу гарантировать, это то, что он выполняет свою работу.