Как использовать ввод в def (Python) - PullRequest
0 голосов
/ 29 апреля 2020

Я новичок ie, когда дело доходит до кодирования. Я был бы очень признателен, если бы вы помогли мне решить мои проблемы с кодированием. Я пытался использовать ввод в моем определении, но не работает.

import random

def estimate_pi(n):
    num_point_circle = 0
    num_point_total = 0
    for _ in range(n):
        x = random.uniform(0,1)
        y = random.uniform(0,1)
        distance = x**2 + y**2
        if distance <= 1:
            num_point_circle += 1
        num_point_total += 1
    return 4 * num_point_circle/num_point_total
n = input("Enter A Random Number")
result = estimate_pi(n)
print (result)

Ответы [ 4 ]

0 голосов
/ 29 апреля 2020

Полагаю, вы спрашиваете об использовании метода "input ()" внутри блока "def".

Я попробовал, как показано ниже, и это сработало.

Дайте мне знать, что именно за ошибка вы получаете


def estimate_pi():
    n =int input("Enter A Random Number")
    num_point_circle = 0
    num_point_total = 0
    for _ in range(n):
        x = random.uniform(0,1)
        y = random.uniform(0,1)
        distance = x**2 + y**2
        if distance <= 1:
            num_point_circle += 1
        num_point_total += 1
    return 4 * num_point_circle/num_point_total

result = estimate_pi()
print (result)
0 голосов
/ 29 апреля 2020

Вы должны преобразовать ввод из string в int: estimate_pi(int(n)) Правильный код будет:

import random

def estimate_pi(n):
    num_point_circle = 0
    num_point_total = 0
    for _ in range(n):
        x = random.uniform(0,1)
        y = random.uniform(0,1)
        distance = x**2 + y**2
        if distance <= 1:
            num_point_circle += 1
        num_point_total += 1
    return 4 * num_point_circle/num_point_total
n = input("Enter A Random Number")
result = estimate_pi(int(n))
print (result)
0 голосов
/ 29 апреля 2020

Вы должны преобразовать тип ввода в целое число:

import random

def estimate_pi(n):
    num_point_circle = 0
    num_point_total = 0
    for _ in range(n):
        x = random.uniform(0,1)
        y = random.uniform(0,1)
        distance = x**2 + y**2
        if distance <= 1:
            num_point_circle += 1
        num_point_total += 1
    return 4 * num_point_circle/num_point_total
n = input("Enter A Random Number")
n = int(n) #converting n from string to integer 
result = estimate_pi(n)
print (result)
0 голосов
/ 29 апреля 2020

Функция ввода python является строкой, тогда как ваш код ожидает целое число. Просто приведите n как целое число, и это должно быть хорошо.

n = int(input("Enter A Random Number"))
...