Получениепри попытке напечатать "для переменной" Python - PullRequest
0 голосов
/ 04 ноября 2019
def main():
    import time
    import datetime
    import random


    def nPrint():
        for n in range(1,x):
            print(n)

    def iRan():
        for i in range(0,x):
            xRan = print(nPrint, datetime.datetime.now().strftime("%H:%M:%S"))
            xRan
            time.sleep(1)

    x = int(input('How many times?'))
    iRan()
    xInp = input('Again?(y/n)')

    if xInp == 'y':
        main()
    else:
        exit()

main()

Я довольно плохо знаком с Python, может кто-нибудь объяснить, почему этот код не может печатать от 1 до n? Выходные данные я получаю каждый раз: <function main.<locals>.nPrint at 0x02AE0030> 19:05:56

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Есть две проблемы с вашей программой: 1. Отсутствует nPrint (). 2. Даже если вы поставите (), он будет только печатать числа от 0 до определенного диапазона (зависит от ввода), а затем выводить время.

Поэтому я советую вам сделать следующее:

Удалите nPrint () и заставьте программу печатать переменную 'i':

def main (): время импорта, время импорта, время импорта, время импорта

def iRan():
    for i in range(0,x):
        xRan = print(i, datetime.datetime.now().strftime("%H:%M:%S"))
        xRan
        time.sleep(1)

x = int(input('How many times?'))
iRan()
xInp = input('Again?(y/n)')

if xInp == 'y':
    main()
else:
    exit()

main ()

0 голосов
/ 04 ноября 2019

Посмотрите на эту строку:

xRan = print(nPrint, datetime.datetime.now().strftime("%H:%M:%S"))

Здесь вы пытаетесь напечатать nPrint, в то время как nPrint - функция, вы должны добавить () для ее вызова. Также обратите внимание, что эта функция может печатать числа сама, поэтому нет необходимости вызывать print(nPrint()), потому что эта функция возвращает None, поэтому печать будет бесполезной:

nPrint()
print(datetime.datetime.now().strftime("%H:%M:%S"))

Обратите внимание, что в этом нет необходимости. сохранить print() результат в xRan переменную

...