Расширение комментария @joran в ответ и пример
geom_vline
рисует весь путь по сюжету; это его цель. geom_segment
будет только рисовать между конкретными конечными точками. Это помогает сделать фрейм данных с соответствующей информацией для рисования линий.
probs <- c(0.25, 0.50, 0.75)
marks <- data.frame(probability = probs,
number = sapply(probs, qbirthday, classes=365, coincident=3))
При этом упрощается только переход к перекрестку.
qplot(number,probability,data=subset(pshare,probability<0.99)) +
geom_segment(data=marks, aes(xend=-Inf, yend=probability)) +
geom_segment(data=marks, aes(xend=number, yend=-Inf))
[/g0]
Скорее всего, вы не хотите вызывать input
как в условном выражении while, так и в цикле while. Что-то вроде этого, вероятно, то, что вы собираетесь:
a = []
num = int(input())
while num != -1:
a.append(num)
num = int(input())
Кроме того, ваше усреднение немного сложнее, чем необходимо. Попробуйте это:
b = sum(a) / len(a)
Конечно, вы столкнетесь с проблемами, если не введете какие-либо числа для усреднения, то есть деления на 0.
print("if u wanna quit inputting number, press '-1'")
print("="*60)
a=[]
while True:
i = int(input())
if i==-1:
break
else:
a.append(i)
def avrg(a):
return sum(a)/len(a)
b=avrg(a)
print(b)
Пользовательский ввод из функции input()
всегда имеет тип str
, поэтому вам необходимо преобразовать его в int
перед сравнением if i==-1
. В цикле while он продолжает потреблять пользовательский ввод, пока пользователь не введет -1
. Сумма списка может быть просто вычислена встроенной функцией sum
.