#python #semantics
#python #семантика
Вопрос:
У меня есть этот код, в котором есть некоторые семантические ошибки, которые я не могу найти. Первая строка не сообщает нам, каким был бросок монеты. 1000 переворотов — это математически невероятные 1000 хвостов. Кубик выдает 0, когда значения должны быть от 1 до 6. Результат с двумя кубиками просто рассказывает нам о функции, а результат с 10 кубиками также содержит нули.
import random
import numpy as np
def flipacoin():
#This function flips a virtual coin and returns "Heads" or "Tails"
coin = random.randint(1, 2) #returns a 1 or a 2
if coin == 1:
coin = "Heads"
elif coin == 2:
coin = "Tails"
def flipNcoins(n):
#This function flips a coin a number of times (n flips total) and returns a string stating results.
total_heads = 0
total_tails = 0
for i in range(n):
if flipacoin() == "Heads":
total_heads = 1
else:
total_tails = 1
return "Heads " str(total_heads) ", Tails " str(total_tails)
def rolladie():
#This function rolls a virtual die and returns a number between 1 and 6.
die = random.randint(0,6)
return die
def rolltwodice():
#This function rollstwo virtual dice and returns a tuple of the two values.
die1 = rolladie()
die2 = rolladie()
return die1, die2
def rollNdice(n):
#This function rolls n virtual dice and returns an array of roll values between 1 and 6.
rolls = np.zeros((n,))
for i in range(n):
die = rolladie()
rolls[i] = die
return rolls
Ответ №1:
coin = "Heads"
устанавливает локальную переменную coin
в "Heads"
. Он не возвращает его. return "Heads"
бы (или, что эквивалентно, return coin
в конце функции). Предполагается, что любая функция, которая не выполняет a return
до своего завершения, возвращает None
. None
очевидно, что нет "Heads"
, поэтому вы накапливаете 1000 total_tails
.
Не должно вызывать большого удивления то, random.randint(0,6)
что числа изменяются от 0 до 6, а не от 1 до 6. Чтобы сделать последнее, используйте random.randint(1,6)
вместо этого.
Я не понимаю, что вы подразумеваете под «Результатом двух кубиков, который просто рассказывает нам о функции».